Подавить всплывающее окно процесса в .NET

#c# #.net #popup #suppress

#c# #.net #всплывающее окно #подавить

Вопрос:

Наша панель пользователя запускает все наше программное обеспечение как службы. Однако по какой-то причине программное обеспечение Mumble voice создает всплывающее окно, когда вы запускаете его с паролем администратора, установленным в командной строке. Кто-то опубликовал альтернативу, используя bat-файл, который запускает два процесса в качестве обходного пути, но есть ли какой-либо способ просто подавить всплывающее сообщение с помощью .NET? Я написал много приложений типа launcher, чтобы исправить подобные вещи, но я понятия не имею, как я мог бы подавить это сообщение.

Вот как выглядит файл .bat из обходного пути.

 set /p VAR= < superadmin.txt
start murmur2.exe -supw %var%
ping 0.0.0.0 -n 3 > NUL
tskill murmur2
murmur.exe
  

Ответ №1:

Вы можете попробовать отслеживать открытые окна и закрывать всплывающее окно через winapi, когда оно появляется

 [DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);

public const int WM_COMMAND = 0x0112;
public const int WM_CLOSE = 0xF060;

int handle = FindWindow(lpClassName, lpWindowName);
SendMessage(handle, WM_COMMAND, WM_CLOSE, 0);