[AutoIT] Java Msg wegklicken.

05/17/2009 13:06 C0rnfl4kes#1
Hi ich habe mal wieder angefangen mit Autoit zu Programmieren und bin auch ein altes Problem gestoßen. Unzwar arbeite ich mit dem IE funktionen also mit einer Seite im Hintergrund und ab einem gewissen Schritt öffnet sich eine Java Msg Box die ich einfach nicht wegbekommen, da das IE Fenster ja auch eigentlich nicht zu sehen ist, und so also die Nachricht auch nich gezeigt wird.

Ich habe mal ein Screen gemacht und den Java Code rausgesucht:
Code:
function change()
{
	if(!confirm('Änderungen übernehmen?')) return false;
	return true;
}
Ich hoffe jmd. kennt das Problem bzw. eine Lösung dafür.

MFG C0rnfl4kes
05/17/2009 13:10 Adroxxx#2
Falches Forum.

#moved nach AutoIt.
05/18/2009 13:52 scbiz#3
Zunächst möchte ich dich darauf aufmerksam machen, dass AutoIt eine Makrosprache ist, weshalb das Wort "skripten" angebrachter als "programmieren" ist. Du bist ja auch kein Programmierer, wenn du (ausschließlich) AutoIt benutzt. Außerdem ist für dich anscheinend Java mit JavaScript gleichbedeutend. Dass dem nicht so ist, kannst du daran erkennen, dass Java eine Programmier- und JavaScript eine Skriptsprache ist. Zu deinem Problem: Keine Ahnung, ob AutoIt irgendwelche eigenen Funktionen, die du verwenden könntest, zur Verfügung stellt. Ich habe es jetzt einfach mal mit Hilfe der WinAPI gemacht...


AutoIt
Code:
$hUser32 = DllOpen("user32.dll")

$hBtnOK = DllCall($hUser32, "hwnd", "FindWindow", "str", "#32770", "int", 0)
$hBtnOK = Dllcall($hUser32, "hwnd", "FindWindowEx", "hwnd", $hBtnOK[0], "int", 0, "str", "Button", "str", "OK")

DllCall($hUser32, "int", "SendMessage", "hwnd", $hBtnOK[0], "uint", 0x06, "uint", 1, "long", 0)
DllCall($hUser32, "int", "SendMessage", "hwnd", $hBtnOK[0], "uint", 0xF5, "uint", 0, "long", 0)

DllClose($hUser32)

Äquivalent in C / C++
Code:
#include <windows.h>

int main(int argc, char **argv)
{
    HWND hBtnOK = FindWindowEx(FindWindow("#32770", NULL), NULL, "Button", "OK");
    
    SendMessage(hBtnOK, WM_ACTIVATE, (WPARAM) MA_ACTIVATE, (LPARAM) NULL);
    SendMessage(hBtnOK, BM_CLICK, (WPARAM) NULL, (LPARAM) NULL);

    return 0;
}
05/18/2009 14:26 I3iLLiG#4
autoit ist eine skriptsprache, da geb ich dir recht. Allerdings kann man das arbeiten damit programmieren nennen ;)
05/18/2009 15:02 scbiz#5
Quote:
Originally Posted by I3iLLiG View Post
autoit ist eine skriptsprache, da geb ich dir recht. Allerdings kann man das arbeiten damit programmieren nennen ;)
... sprach der objektive und äußerst kompetente AutoIt-Programmierer.
05/18/2009 15:06 I3iLLiG#6
lol ok wenn ich komplexere und größere projekte programmieren will benüte ich c# aber für kleine tools und anwendungen nehme ich noch immer sehr gerne autoit.

btw. danke fürs kompliment
05/19/2009 16:42 C0rnfl4kes#7
Ok ich werde das mal versuchen danke für die Hilfe.

MFG