![]() |
Browser versteckt öffnen und wieder schließen
Hi.
Um für die Schule ein kleines Onlinehighscoreprogramm zu schreiben (also das Spiel existiert, nun soll die Highscore online kommen) habe ich eine php-Datei. Diese php-Datei wird mit den Parametern name und Highscore aufgerufen und schreibt das ganze so in eine Datei auf dem Server die die aktuelle Rangliste wiedergibt. Nach dem Spiel wird also der Browser per Shellexecute versteckt aufgerufen (damit niemand so schnell lerkennt wie das ganze Funktioniert und einfach den Punkteparameter ändert) und schreibt so die Highscore online. Nun möchte ich aber den Browser danach wieder schließen (nachdem er die Highscore eingetragen hat). Ansonsten wäre nach 10 Spielen ja 10 mal versteckt der Browser im Hintergrund am laufen. Daher meine Frage, wie stelle ich das nun an, den geöffneten Browser zu schließen? Ich könnte alle ALLE Browserfenster schließen, aber das wäre ja sehr ungeeignet. Ich dachte ich könnte beim erstellen des Browsers das Handle gleich auslesen oder sogar angeben, um dann genau mein Browserfenster danach zu schließen. Weiß jemand wie das ginge oder hat eine andere Idee? thx 4 help! |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Sonstige Fragen zu Delphi" nach "Internet / LAN / ASP.NET" verschoben.
|
Re: Browser versteckt öffnen und wieder schließen
Hallo,
ich würde einen der Indy-Clients nehmen. Die URL hast Du ja schon irgendwo in Deinem Programm zusammengebastelt und wenn es nur darum geht, eine URL aufzurufen, um ein PHP-Script anzustoßen, dann würde ich wie eben gesagt, einen Indy-Client nehmen. Web- oder HTTP- Sowieso der dgl. müsste der heißen. Duch etwaige Hinweismeldungen von Firewalls ("Ausgehnde verbindung nach XY") oder Monitore oder dgl. jedoch wirst Du die URL kaum geheim halten können. Letzlich ist es eine Frage, wie groß der Aufwand sein soll, den Du betreiben möchtest. Ein simpler Schutz, der schon mal einige selbsternannte Hacker ausschließen würde, wäre es, einen MD5-Schlüssel anzuhängen. In diesen Schlüssel gehen die Parameter (Highscore etc.) eine sowie ein nur Dir und Deinem PHP-Script bekannte Zeichenfolge. So könntest Du auf einfache Weise erkennen, falls wer die Parameter verändert. Aber es führen wie so oft 1.000 Wege nach Rom. ;-) |
Re: Browser versteckt öffnen und wieder schließen
Warum nutzt du nicht Indy um die Daten per POST an das PHP Script zu senden. Oder falls das nicht geht, dann könntest du das PHP Script auch runterladen (bspw. ins Tempverzeichnis, ist ja ne leere Datei, einfach mal hier nach Downloadfunktionen Suchen) und die Daten dabei per GET übermitteln. Nach dem Download kannst du die Datei wieder löschen. Es geht ja nur darum, dass sie auf dem Server ausgeführt wurde.
Beide Lösungen sollten besser sein, als nen Browser aufzurufen. MfG Pr0g |
Re: Browser versteckt öffnen und wieder schließen
ich hätte 2 Ideen!
1. Du übergibst die Daten nicht per Browser an das Script, sondern per Indy HTTP Komponente und der Post MEthode! Dann brauchst du den ganzen Schnick Schnack garnicht. 2. Du nimmst die Webbrowser Komponente aus Active X und erledigst damit deine Auswührung. Dann brauchst du dir auch um das schließen keine Gedanken machen, da alles unsichtbar passieren könnte! Gruß Kidix |
Re: Browser versteckt öffnen und wieder schließen
Das problem ist ich bin jetzt so schon fertig mit der Browsersteuerung, nur mir ist aufgefallen, dass sich die Dinger dann im Taskmanager häufen.
Hat keiner eine Idee, wie ich genau mein Fenster wieder schließe? Wäre mir am liebsten und würde mich auch unabhängig von der Notwendigkeit mal interresieren wie das mit den Handles ist. Ich könnte die Datei die aufgerufen wird doch auch z.B. ASJKDASDASDASIWEHJRJKDAHDKLADKLDDASDA nennen und dann das Handle kriegen indem ich eben das Fenster mit dem Titelteil: ASJKDASDASDASIWEHJRJKDAHDKLADKLDDASDA suche, oder? Weiß jemand wie das genau geht, das nur dieser Teil im Fensternamen stehen muss, weil die genaue Bezeichnung hinge ja vom Browser ab, z.B. ASJKDASDASDASIWEHJRJKDAHDKLADKLDDASDA - Mozilla Firefox oder Microsoft Internet Explorer - ASJKDASDASDASIWEHJRJKDAHDKLADKLDDASDA Hätte da jemand einen Codeschipsel für mich um das Handle zu kriegen? //Edit: Also ich weiß das ich mit diesem Code das Fensterhandle anhand eines Fensternamens bekomme: Prozedur:
Delphi-Quellcode:
Aufruf:
uses TLHelp32;
procedure GetExeNameByWindowTitle(fenstertitel: string; var ergebnis: TStringList); var PID: DWord; aSnapShotHandle: THandle; ContinueLoop: Boolean; aProcessEntry32: TProcessEntry32; begin ergebnis.clear; GetWindowThreadProcessID(FindWindow(nil, PChar(fenstertitel)), @PID); aSnapShotHandle := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); try aProcessEntry32.dwSize := SizeOf(aProcessEntry32); ContinueLoop := Process32First(aSnapShotHandle, aProcessEntry32); while Integer(ContinueLoop) <> 0 do begin if aProcessEntry32.th32ProcessID = PID then ergebnis.Add(aProcessEntry32.szExeFile); ContinueLoop := Process32Next(aSnapShotHandle, aProcessEntry32); end; finally CloseHandle(aSnapShotHandle); end;
Delphi-Quellcode:
Aber ich kenne ja nur einen Teil des Fensternamens, in Beispielfall ASJKDASDASDASIWEHJRJKDAHDKLADKLDDASDA , wie kann ich nun trotzdem das Fensterhandle kriegen?
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList; begin sl:=TStringList.Create; try GetExeNameByWindowTitle('HTML Editor', sl); ListBox1.Items.AddStrings(sl); finally sl.free; end; end; |
Re: Browser versteckt öffnen und wieder schließen
Ein paar Daten an das PHP Script zu übergeben sind doch kein großes Ding. Dir wurde nun dreimal gesagt, wie du es leichter und besser machen kannst. Stell dei System doch einfach um, sollte schneller gehen, als nach einer Lösung für dein jetziges Problem zu suchen. ;)
|
Re: Browser versteckt öffnen und wieder schließen
Zitat:
Aber jetzt bin ich daran interresiert wie das mit dem Handle Funktioniert :) unabhängig davon ob es in diesem FAll sinnvoll ist. Ich eröffne dazu mal einen neuen Threat :) //Edit: Hier gehts weiter :) ![]() |
Re: Browser versteckt öffnen und wieder schließen
So ich krame den Threat hier nochmals raus, da ich ein Problem habe :)
ich möchte den Standartbrowser nun versteckt öffnen, aber dafür bin ich zu dumm!
Delphi-Quellcode:
StandartBrowser wird dabei aus der Registry ausgelesen und ist eine exe, z.B. IEXPLORE.exe
ShellExecute(Application.Handle, 'open',
PChar(StandardBrowser), 'http://MYSERVER.COM/HighScore.php?string=Username-100', nil, sw_Hide); Der Browser startet auch wie gewünscht, aber trotzdem nicht versteckt! Auch:
Delphi-Quellcode:
funktioniert nicht.
ShellExecute(Application.Handle, 'open',
PChar('http://MYSERVER.COM/HighScore.php?string=Username-100'), nil, nil, sw_Hide); Wieso bin ich zu blöd das Programm versteckt zu starten?! Dabei sei erwähnt, mein Standartbrowser ist Firefox. Mit dem IE klappt das ganze mit dem versteckt starten! //Edit: Ich denke das geht auch zu weit am Thema vorbei, neuer Threat hier: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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