![]() |
Re: Fehlermeldung von fremdem Programm abfragen
Warum einfach, wenn es auch kompliziert geht? :???:
Ich habe zufälligerweise eben gerade mein Projekt mit dem Hook fertiggestellt. Es war dann doch nicht so trivial (!?), wie ich gedacht hatte, ich musste mich noch in Mailslots einarbeiten, aber ich habe einiges gelernt. Soll ich mein Projekt mal hochladen oder reicht dir der einfache Weg? (grins) [edit] Tja, ein guter WinAPI-Programmierer sollte vielleicht nicht nur wissen, wie man etwas machen kann, sondern auch, wie man es am einfachsten macht. [/edit] [edit] EnumWindows wird nicht funktionieren, da es laut MSDN nur "top-level-windows" angibt. Da wirst du wohl andere Tricks brauchen, entweder meinen Weg :cyclops: oder ein Findwindow kombiniert mit entweder Findwindowex oder, wenn du es kompliziert willst, enumChildWindows. |
Re: Fehlermeldung von fremdem Programm abfragen
xD bei mir funktioniert das tadellos.
Hier mal mein Code:
Delphi-Quellcode:
var
x, y: Integer; begin Memo1.Lines.Delete(9); i := i+1; Memo1.Lines.Add(inttostr(i)+' trys to get in a room ;)'); Memo1.Lines.Delete(11); mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); // Doppelklick auf den Raum mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); sleep(1000); //Kurz warten sodass die Fehlermeldung erscheinen kann wenn der Raum voll ist Button2.Click; //Dann Button2 klicken um zu überprüfen ob die Fehlermeldung kam oder nicht if Edit1.Text = 'found' then //Dann Enter drücken um die Fehlermeldung zu "entfernen" begin keybd_event(VK_Return,0,0,0); Button1.Click; //und erneut die Przedur ausführen end; end;
Delphi-Quellcode:
Vielleicht umständlich geschrieben^^
procedure TForm1.Button2Click(Sender: TObject);
var Count , Count1, i, i1 :integer; s : string; begin Listbox1.Clear; EnumWindows(@EnumWinProc, 0); //Alle Fensternamen in Listbox1 schreiben Count := Listbox1.Items.Count-1; Listbox2.Clear; for i := 0 to Count do begin s := Listbox1.Items.Strings[i]; delete(s, 1, 9); //Da vor jedem namen noch die Adresse steht diese löschen Listbox2.Items.Add(s); //Nun den namen ohne adresse in Listbox2 schreiben end; Listbox3.Clear; for I := 0 to Count do begin if Listbox2.Items.Strings[i] = 'GG Gaming Client Beta 1.6' then //Dort nach dem Fensternamen suchen, welchen die Fehlermeldung trägt begin Edit1.Text := 'found'; //Wenn gefunden dann found in Edit1 schreiben und bei button1 weiter machen end; end; end; //EDIT1 hier mal eine liste von allen Fensternamen die angezeigt werden:
Delphi-Quellcode:
//EDit2
020086 : Startmenü
010082 : CiceroUIWndFrame 08021E : CodeParamWindow 0100DC : CiceroUIWndFrame 0200A6 : TF_FloatingLangBar_WndTitle 05051E : Forcer - K1ngC0bra 0804D2 : Forcer 190262 : Struktur 1D025E : Modellansicht 0507EC : Benachrichtigung über Debugger-Problem 030244 : Unit1.pas-Darstellung 0104A6 : Übersetzungswörterbuch 0E021A : HelpInsightWindow 0103C8 : Datenbank-Engine-Fehler 02033C : Forcer - Borland Delphi 2005 for Microsoft Windows - Unit1 [Ausführen von] 010504 : EditorStatusControlForm 010330 : Debug 020324 : Übersetzungswörterbuch 02031C : Schriftart wählen 01031A : Suchergebnisse 02035C : IDEToolbarForm 01036A : Meldungen der Versionskontrolle 01037E : IDEToolbarForm 030304 : Suchen 0102EC : Forcer - Borland Delphi 2005 for Microsoft Windows - Unit1 [Ausführen von] 020684 : GGTV 0206A0 : GGTV 020546 : BNet Ping 020558 : GGTV Player 02063A : Ladder Game Start 020602 : Dialog 020712 : Search a user 0701C2 : GG E-Sports Platform Beta 1.6 02055A : CTrayNotifyIcon Resurrection Notification Window 0601EA : CTrayNotifyIcon Resurrection Notification Window 0401A6 : CTrayNotifyIcon Animation Notification Window 0801CC : Message Manager 0402B2 : Delphi-PRAXiS :: Beitrag editieren - Mozilla Firefox 0601D6 : Socket Notification Sink 020220 : KibitzWindow 0302B4 : XPCOM:EventReceiver 0D0266 : NetscapeDispatchWnd 090284 : XPCOM:EventReceiver 020296 : DBK 020298 : BORDBK90 0401F4 : MCI command handling window 0101DA : ICQ 02035E : .NET-BroadcastEventWindow.1.0.5000.0.20 030338 : WindowsFormsParkingWindow 010368 : DDE Server Window 0102C8 : CTicketManagerWnd 0102CC : DDE Server Window 0101E6 : NVSVCPMMWindowClass 010162 : Connections Tray 010154 : Energieanzeige 01014E : MS_WebcheckMonitor 0300C0 : BitTorrent DNA 2.0 Beta 0100FA : PrivoxyTrayWindow 0100F6 : Privoxy 0100F4 : PrivoxyLogOwner 0100CC : keyboard 0100AE : mouse 04005A : WindowBlinds 0100E4 : GDI+ Window 01011C : GDI+ Window 01017A : Script Console 0402D0 : Boxely:TimerWindow 0101A0 : vidalia 010176 : Tor Network Map 010174 : Tor Bandbreitenbenutzung 010172 : Nachrichtenprotokoll 01016C : vidalia 01016A : Vidalia Kontroll-Panel 02037A : GDI+ Window 0302DE : SysFader 010084 : Program Manager kannste in Chat kommen? |
Re: Fehlermeldung von fremdem Programm abfragen
Wäre es nicht viel einfacher, wenn du den Code von dsdt etwas modifizieren würdest, anstatt dich da mit der vorgeschriebenen Listbox rumzuquälen?
Dein Ansatz funktioniert auch, wenn keine Fehlermeldung kommt? Das würde mich nämlich irritieren, da dazu die Fehlermeldung ein top-level-Fenster ohne Owner sein müsste, was sehr unüblich wäre... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz