Strg+A; Strg+C funktioniert nicht
-
Hi!
Ich möchte eine Website nach einem Schlüsselwort durchsuchen (Text auf Website; --> nicht Quellcode). Hierzu öffne ich die Website mittels CppWebBrwowser und möchte den Text der Seite über Strg+A; Strg+C kopieren.
Ich habe es versucht über:
keybd_event(VK_CONTROL, 0, 0, 0); //Str drücken
keybd_event('A', 0, 0, 0); //'a' drücken
keybd_event('A', 0, KEYEVENTF_KEYUP, 0); //'a' loslassen
keybd_event('C', 0, 0, 0); //'c' drücken
keybd_event('C', 0, KEYEVENTF_KEYUP, 0); //'c' loslassen
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); //Str loslassensowie auch so:
HWND hWnd; //das ist der Handle für das Konsolenfenster
hWnd = GetForegroundWindow(); //Handle vom aktuellen Vordergrundfenster
PostMessage(hWnd, WM_KEYDOWN, VK_CONTROL ,0);
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan('A'),0);
PostMessage(hWnd, WM_KEYUP , VkKeyScan('A'),0);
PostMessage(hWnd, WM_KEYDOWN, VkKeyScan('C'),0);
PostMessage(hWnd, WM_KEYUP , VkKeyScan('C'),0);
PostMessage(hWnd, WM_KEYUP , VK_CONTROL ,0);Problem: AnsiString text=Clipboard()->AsText;
--> Im Debugger ist text immer NULL;Hat einer dafür vielleicht eine Begründung bzw. weiß jemand wo mein Fehler liegt?
PS: Habe es auch mit Sleep zwischen den Befehlen versucht wie auch "Strg+a/c" über einen Timer aufzurufen. Ohne Erfolg
-
ähm ja, ich würde mal sagen das ist ein Programm wie es nur ein Anfänger schreiben würde.
Angenommen, es würde funktionieren was du da vorhast, wie würdest du herausfinden welchen teil des Textes aus der Zwischenablage verarbeitet werden sollte?
Mach ne anfrage an den Server und hol dir den Quelltest der seite, dafür gibt es parser, mit denen du am einfachsten die Informationen herausfiltern kannst die du haben willst.
Und noch ein Tipp, mach es nicht in C++, die Sprache ist nicht für solche dinge optimiert, hier ist der Aufwand einfach zu groß.
IMHO müsste python besser dafür geeignet sein.
merke dir: versuche nicht ein Programm an das User Interface (Tastatur, text im browser) anzubinden, wenn es auch ein Programm Interface(quelltext) gibt.
-
Angenommen, es würde funktionieren was du da vorhast, wie würdest du herausfinden welchen teil des Textes aus der Zwischenablage verarbeitet werden sollte?
->text.SubStringMach ne anfrage an den Server und hol dir den Quelltest der seite, dafür gibt es parser, mit denen du am einfachsten die Informationen herausfiltern kannst die du haben willst.
->Ich will eben nicht den Quelltext (Ich habe versucht die infos mit IdHTTP->Get(<Website>) zu bekommen, wurde aber mit dem Erg nicht glücklich)Trotzdem Danke für die schnelle Antwort
PS:
Wie meintest du das mit den Parsern? Es ist ja nicht unbedingt jedes Wort im Quellcode auch auf der Website sondern nur Irgendwelche Variablen (z.B. Zeitsperre bei RS usw.)
-
Habe den Text nun über die Funktion "ExtractHtmlCodeOfCurrentPage()"
von http://www.bytesandmore.de/rad/cpp/snipp/sc08007.php erledigt.