Externer Prozess soll geschlossen werden, Programm schließt sich selbst.
-
Einen schönen Abend, liebe Community!
Bitte seit mal nicht so fies, denn ich bin noch relativ neu :).
Google und die Sufu habe ich benutzt!
Also, ich habe hauptsächlich für meinen Freund (und weil ich Spaß am programmieren habe) ein "Anti Rick Roll" Programm geschrieben.
Ich glaube ihr wisst was ein Rick Roll ist.
(Wenn nicht hilft Wikipedia)
Ich möchte einfach, wenn der Benutzer eine solche Seite (vllt. bewusst) aufruft, dass das Programm dieses Firefox Fenster sofort schließt.
Doch irgendwas funktioniert nicht, wenn ich auf diese Rick Roll Seite gehe ( Ziehmlich Billig, aber egal : http://thekickback.com/rickroll/rickroll.php)
schließt sich nicht Firefox, sondern das Programm.
Hier der Quellcode:
#include <iostream.h> // Für die Liebe C Plus Plus Community habe ich nochmal dem Code kommentare hinzugefügt, #include <windows.h> // damit ihr seht, was ich denke dass das Programm macht. #include <conio.h> using namespace std; int main() { system("color 0a"); cout << "Rick Roll Scanner geladen \n"<< endl; HWND rr1 = NULL; while(rr1 == NULL) // Währen rr1 NULL (also leer, nicht den Rick rolled titel hat ) , { rr1 = FindWindow(NULL, "RICKROLLED. - Mozilla Firefox"); // wird das Fenster mit dem angegebenen Titel gesucht (Ich habe nachgeschaut, er heißt so.) Sleep(100); // Damit nicht überlastet wird, lasse ich das Programm "schlafen" } cout << " |INFORMATION| Sie wurden geschuetzt. " << endl; // Wenn das Fenster gefunden wurde, wird diese Nachricht ausgegeben (auch das wird nicht getan) DWORD prozessid; GetWindowThreadProcessId(rr1, &prozessid); DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); HANDLE handleprozess; handleprozess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozessid); CloseHandle(handleprozess); // Hier soll das RickRoll geschlossen werden (Also das Firefox fenster) return 0; }
Ich hoffe dass ihr konstruktive Kritik... ähh... weiterhelfende Antworten gebt.
Nochmal, bitte kommt mir nicht mit "huuu nimm google", denn das habe ich schon :).
MFG,
civis.
-
Ich sehe da ein paar Fehler in dem Codestück.
DWORD prozessid; GetWindowThreadProcessId(rr1, &prozessid); DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); HANDLE handleprozess; handleprozess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozessid); CloseHandle(handleprozess); // Hier soll das RickRoll geschlossen werden (Also das Firefox fenster)
-
Wenn Du das Fenster identifiziert hast kannst Du auch sowas wie
ShowWindow(), SendMessage(hWnd,WM_DESTROY,(WPARAM)NULL,(LPARAM)NULL)
Verwenden,...
grüüße
-
das mit
ShowWindow(), SendMessage(hWnd,WM_DESTROY,(WPARAM)NULL,(LPARAM)NULL)
funktioniert schon, nur wird hier das Gesamte Firefox geschlossen nicht nur der Tab.
Eine Andere Möglichkeit wäre das ChildWindow von Firefox zu finden und dann zu schließen.z.B.:
... HWND Parent, Child; Parent = FindWindow(NULL, "Rick Rolled. - Mozilla Firefox"); Child = FindWindowEx(Parent, NULL, "MozillaWindowClass", NULL); SendMessage(Child, WM_DESTROY, NULL, NULL); ...
-
Hallo ihr :).
Danke für eure Hilfe.
Ich werde beides versuche und wenn was nicht klappt, editiere ich hier einfach.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ EDIT _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
andrewla1990 schrieb:
Ich sehe da ein paar Fehler in dem Codestück.
DWORD prozessid; GetWindowThreadProcessId(rr1, &prozessid); DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); HANDLE handleprozess; handleprozess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozessid); CloseHandle(handleprozess); // Hier soll das RickRoll geschlossen werden (Also das Firefox fenster)
Bei meinem Compiler , DEV-C++, wurde es nicht als Fehler erkannt. Oder meinst du Fehler in einem anderen Sinn?
andrewla1990 schrieb:
das mit
ShowWindow(), SendMessage(hWnd,WM_DESTROY,(WPARAM)NULL,(LPARAM)NULL)
funktioniert schon, nur wird hier das Gesamte Firefox geschlossen nicht nur der Tab.
Eine Andere Möglichkeit wäre das ChildWindow von Firefox zu finden und dann zu schließen.z.B.:
... HWND Parent, Child; Parent = FindWindow(NULL, "Rick Rolled. - Mozilla Firefox"); Child = FindWindowEx(Parent, NULL, "MozillaWindowClass", NULL); SendMessage(Child, WM_DESTROY, NULL, NULL); ...
Nun, das Problem ist - nach wie vor -, dass sich das Programm beim öffnen des Rick Rolls selbst schließt - Und nicht Firefox...
Und das erkennen das Firefox Tabs werde ich dann (wenn sich mein Programm , womöglich durch eure Hilfe :p , nicht mehr schließt) erst einmal mit einem Cout testen und dann schauen wie ich das Tab schließe.
-
Probiere mal:
#include <iostream> #include <windows.h> using namespace std; int main() { system("color 0a"); cout << "Rick Roll Scanner geladen \n"<< endl; while(true) { HWND rr1 = NULL; while(rr1 == NULL) { rr1 = FindWindow(NULL, "RICKROLLED. - Mozilla Firefox"); Sleep(100); } cout << " |INFORMATION| Sie wurden geschuetzt. " << endl; SendMessage(rr1, WM_CLOSE, NULL, NULL); Sleep(1000); } return 0; }
-
Vielen Dank!
Funktioniert Prächtig.
Bloß leider kann man Alerts nicht umgehen :\.
(Meinem Wissen nach)
-
wenn du vor
SendMessage(rr1, WM_CLOSE, NULL, NULL);
das einsetzt:
SendMessage(rr1, WM_DESTROY, NULL, NULL);
dann schon
-
Ja,darauf bin ich auch selbst gekommen ;).
Ein bisschen brutal,aber was solls : ).
-
Grr!
Aufgrund meiner Ungeschicklichkeit habe ich den Code gelöscht (ohne es zu merken) , der die Blacklist Funktion ...ähem... macht.Die Blacklist Funktion ist folgende (Sie hat funktioniert!):
User gibt ein :
Bla.
Wird in Blacklist.txt geschrieben (funktioniert immer noch)
Das Programm soll nach den Fenstertiteln in Blacklist.txt suchen (klappte alles einwandfrei) und eben, wenn eines dieser Fenster entdeckt wurde, schließen.
Hier mein aktueller Code:
#include <iostream.h> #include <windows.h> #include <conio.h> #include <stdio.h> #include <fstream.h> using namespace std; int main() { while(true) { system("color 0a"); cout << "FireFox Filter geladen. \n" < endl << "\nZum laden/erstellen der Blacklist einfach 123 eingeben.\n" << endl; int help; cin>>help; if (help==123) { cout << "\nMade by IceFire - Idea and Code by IceFire. [Thanks to c-plusplus.net] \n(C)2009. All rights reserved.\nBitte geben Sie nun 456 ein, um die Blacklist zu laden/updaten/erstellen.\n Das Angeben eines Fensters ist (bis jetzt noch) IMMER notwendig!\n" << endl; } else { cout << "\n+++Befehl nicht bekannt - Fehler+++" << endl; } int glog; cin >> glog; if (glog==456) { cout << "\nBitte geben Sie den Titel des Fensters an. (MIT - Mozilla Firefox)\n\n"; char bl [10000]; cin >> bl; ofstream fout( "Blacklist.txt" ); fout << "RICKROLLED. - Mozilla Firefox"; fout << bl; fout << endl; } else { cout << "\n+++Befehl nicht bekannt - Fehler+++" << endl; } HWND rr1 = NULL; while(rr1 == NULL) { // Hier war der Code :( } cout << "****INFO**** Filter hat das öffnen dieses Links verhindert.\n\n " << endl; SendMessage(rr1, WM_DESTROY, NULL, NULL); Sleep(1000); } return 0; }
Könnt ihr mir bitte helfen?
Heftiges Googlen half nichts.Ich fand zwar etwas zum Thema,trotzdem.