AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung von fremdem Programm abfragen

Ein Thema von napsterxx · begonnen am 14. Aug 2007 · letzter Beitrag vom 19. Aug 2007
Antwort Antwort
Seite 2 von 2     12   
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Fehlermeldung von fremdem Programm abfragen

  Alt 19. Aug 2007, 14:27
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 oder ein Findwindow kombiniert mit entweder Findwindowex oder, wenn du es kompliziert willst, enumChildWindows.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Fehlermeldung von fremdem Programm abfragen

  Alt 19. Aug 2007, 14:56
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 = 'foundthen //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:
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.6then //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;
Vielleicht umständlich geschrieben^^

//EDIT1
hier mal eine liste von allen Fensternamen die angezeigt werden:
Delphi-Quellcode:
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
//EDit2
kannste in Chat kommen?
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Fehlermeldung von fremdem Programm abfragen

  Alt 19. Aug 2007, 18:11
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...
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz