Как предотвратить открытие окна из другого приложения? - PullRequest
1 голос
/ 09 марта 2010

Я не позволю открыть окно из iTunes. Я много гуглил, но не могу найти библиотеку iTunes, которая позволяет мне контролировать такие вещи, поэтому я думаю, что должен вернуться к основам и закрыть ее после того, как она откроется, но как?

Я думаю:

  • Отметьте таймер каждые 500 мс
  • Проверьте, открыта ли ручка окна
  • Закрыть

Это возможно? Как я могу распознать окно из этого приложения на других компьютерах (я отдам свое приложение)?

Язык - C # .Net 2.0.

Ответы [ 3 ]

1 голос
/ 09 марта 2010

Да, есть возможность найти окно и закрыть его. Однако пользователь все равно увидит его.

Вы можете использовать метод PInvoke для FindWindow или использовать C # (предпочтительнее)

using System.Diagnostics;
Process[] processes = Process.GetProcessesByName("notepad");
foreach (Process p in processes)
{
    p.CloseMainWindow();
}

Отсюда

Это только для закрытия верхнего приложения, я не знаю, можете ли вы найти подокно с Process. Я знаю, что вы можете с PInvoke, см. Пример здесь

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

или

[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
0 голосов
/ 09 марта 2010

Конечно, есть способы сделать это, подход, который я использовал ранее, был основан на win32API, вам нужно взглянуть на следующее:

  1. FindWindow
  2. SendMessage

Короче говоря, вы можете использовать таймер, и когда он срабатывает, используйте FindWindow (либо используя строку заголовка окна, либо «класс» приложения), чтобы получить дескриптор, когда вы отправите сообщение в окно, по крайней мере WM_CLOSE или WM_DESTROY

0 голосов
/ 09 марта 2010

Возможно, я здесь не прав, так как я в основном программист-любитель, но позвольте мне попробовать:

Это вообще возможно? Механизмы, управляющие закрытием окна, находятся внутри самого приложения (в вашем примере: iTunes) и операционной системы. Это кажется огромным нарушением безопасности, если одно приложение может переопределить код другого приложения и закрыть окно. Не кажется правдоподобным

Похоже, я здесь не прав. Игнорировать!

...