[C++] ZoneAlarm "Zulassen" klicken

Jellysheep

Erfahrenes Mitglied
Hi,
ich versuche grade, ein Programm zu schreiben, das bei einer Sicherheitswarnung von ZoneAlarm auf Zulassen klicken soll. Folgender Programmcode:
Code:
int main(){
	HWND hWnd = FindWindow(NULL, "ZoneAlarm-Sicherheitswarnung");
	if(!hWnd){
		cerr<<"ERROR: Finding Window"<<endl;
		cin.get();
		return -1;
	}
	HWND button = FindWindowEx(hWnd, NULL, NULL, "Zu&lassen");
	if(!button){
		cerr<<"ERROR: Finding Button"<<endl;
		cin.get();
		return -1;
	}
	SendMessage(button, WM_LBUTTONDOWN, 0, 0);
	Sleep(100);
	SendMessage(button, WM_LBUTTONUP, 0, 0);
	return 0;
}
Aber die Meldung schließt sich nicht. Woran liegt das?
 
So rein intuitiv (ich hab das noch nie gemacht oder getestet) würde ich das mal folgendermassen probieren:
Code:
        HWND hButton;
	WINDOWINFO inf;
	GetWindowInfo(hButton, &inf);
	WORD x = floor((inf.rcClient.right - inf.rcClient.left) / 2.0f);
	WORD y = floor((inf.rcClient.botton - inf.rcClient.top) / 2.0f);
	LPARAM l = (y << 16) | x;
 
Mein Code:
Code:
int main()
{
	HWND hWnd = FindWindow(NULL, "ZoneAlarm-Sicherheitswarnung");
	if(!hWnd){
		cerr<<"ERROR: Finding Window"<<endl;
		cin.get();
		return -1;
	}
	HWND button = FindWindowEx(hWnd, NULL, NULL, "Zu&lassen");
	if(!button){
		cerr<<"ERROR: Finding Button"<<endl;
		cin.get();
		return -1;
	}
	HWND button2 = FindWindowEx(hWnd, NULL, NULL, "&Verweigern");
	if(!button2){
		cerr<<"ERROR: Finding Button2"<<endl;
		cin.get();
		return -1;
	}
	cout<<"Window and buttons found!"<<endl;
	WINDOWINFO inf;
	GetWindowInfo(button, &inf);
	WORD x = floor((inf.rcClient.right - inf.rcClient.left) / 2.0f);
	WORD y = floor((inf.rcClient.bottom - inf.rcClient.top) / 2.0f);
	LPARAM l = (y << 16) | x;
	cout<<"X: "<<GET_X_LPARAM(l)<<"\tY: "<<GET_Y_LPARAM(l)<<endl;
	int ret = SendMessage(button2, WM_LBUTTONDOWN, MK_LBUTTON, l );
	Sleep(100);
	SendMessage(button2, WM_LBUTTONUP, 0, l );
	cout<<"Return code: "<<ret<<endl<<"Error code: "<<GetLastError()<<endl;
	cin.get();
	return 0;
}
 
Mal schauen welches der ungültige Parameter ist. Ersetze zuerst MK_LBUTTON durch 0, anschliessend machst du wieder MK_LBUTTON hin und ersetzt l durch 0. Dann noch beide auf 0 und vergleichst mal die Errorcodes.
 
Note that you must set WINDOWINFO.cbSize to sizeof(WINDOWINFO) before calling this function.

Achso...
Habs ausprobiert... Errorcode 0! :)
Aber das Fenster verschwindet immer noch nicht...
Ich habe einen Klick auf den "Start"-Button der Menüleiste von Windows ausprobiert, das geht auch nicht...
 
Zurück