![]() |
FindWindow zum 215. Mal
Hallo!
Ich bin gerade am Verzweifeln. Ich versuche über ein kleines Updatetool meine "Hauptanwendung" automatisch upzudaten. Das ganze funktioniert nur dann wenn das Hauptprogramm nicht läuft. Jetzt versuche ich schon alle möglichen Varianten um das ganze abfragen zu können, nur gelingt es mir nicht:
Delphi-Quellcode:
Er bringt mir immer 'läuft' auch wenn die App. nicht läuft.
if FindWindow(PChar('AdressenDB.exe'), PChar('Form1')) = 0 then
Showmessage ('läuft'); Bitte um Hilfe. Danke MaxMara |
Re: FindWindow zum 215. Mal
Wenn FindWindow etwas findet, gibt es das Handle zum fenster zurück (das es gefunden hat), welches dann nicht 0 sein sollte!
ciao, Philipp |
Re: FindWindow zum 215. Mal
bringt er auch "läuft" wenn die application läuft??
Weil soweit ich informiert bin, gibt die funktion 0 zurück wenn das programm NICHT gefunden wird/läuft und sonst das handle vom fenster <edit>und wiedereinmal muss das alter sich der jugend in sachen geschwindigkeit geschlagen geben :wink: </edit> |
Re: FindWindow zum 215. Mal
Ähm, wenn FindWindow null zurückliefert, dann heißt das es hat nichts gefunden, ansonsten gibt es den fensterhandle zurück. Und kuck dir die Parameter noch mal an. Die Fensterklasse ist bestimmt nicht "AdressDB.exe", sondern wahrscheinlich "TForm1", wenn dein fenster "Form1" heißt.
|
Re: FindWindow zum 215. Mal
@Luckie:
Er gibt mir immer null zurück - egal ob es läuft oder nicht. Habe die Fensterklasse jetzt auf TForm1 geändert und das hat auch nichts gebracht. Wie finde ich denn die richtige Fensterklasse raus? @Smokey: Ja - immer 0 |
Re: FindWindow zum 215. Mal
Ich sagte doch dass es wohl immer null zurückgibt, weil die Fensterklasse bestimmt nicht "AdressDB.exe" lautet.
Vergiss mal die Fensterklasse und probier es erstmal nur mit dem Titel. |
Re: FindWindow zum 215. Mal
Ein eindeutiger Name für die Form ist zu bevorzugen, weil du sonst u.U. das falsche TForm1-Programm beendest. Und dann ist der Klassenname der erste Parameter, der zweite ist der Fenstertitel. Eine Abfrage müsste daher so aussehen:
Delphi-Quellcode:
if findwindow('TForm1',nil) <> 0) then
ShowMessage('läuft'); |
Re: FindWindow zum 215. Mal
Könnte er hier nicht auch mit einem Mutex arbeiten?
Allerdings kann er die Anwenundg dann auch nur einmal starten :roll: Ansonsten alle Prozesse auflisten und nachsehen ob das Programm läuft ![]() |
Re: FindWindow zum 215. Mal
Zitat:
Zitat:
|
Re: FindWindow zum 215. Mal
ich hab gedacht, dass es nicht so geht:
FindWindow('TForm1', nil); sondern so:
Code:
habs getestet, was ich mir da erdacht habe und es läuft.. ;)
if
FindWindow(nil, 'Delphi-PRAXIS :: Antwort schreiben - Microsoft Internet Explorer') <> 0 then ShowMessage('du schreibst gerade eine atwort auf delphi-praxis!'); mfg rob :mrgreen: |
Re: FindWindow zum 215. Mal
Es hat auch niemand das gegenteil behauptet und davon reden wir übrigens die ganze Zeit. :roll:
|
Re: FindWindow zum 215. Mal
sry :oops:
hab ich net gemerkt ;) hab das thema nur überflogen und gedacht, dann schreib ich halt schnell mal nen kelienen source.. PS: MathiasSimmack Verfasst am: 21.05.2004, 16:50 Titel: Re: FindWindow zum 215. Mal Ein eindeutiger Name für die Form ist zu bevorzugen, weil du sonst u.U. das falsche TForm1-Programm beendest. Und dann ist der Klassenname der erste Parameter, der zweite ist der Fenstertitel. Eine Abfrage müsste daher so aussehen: stimmt das hier denn?? :
Code:
Source: if findwindow('TForm1',nil) <> 0) then ShowMessage('läuft'); |
Re: FindWindow zum 215. Mal
Zitat:
|
Re: FindWindow zum 215. Mal
Zitat:
|
Re: FindWindow zum 215. Mal
also stimmts nicht :mrgreen:
ich bleib dann mal bei meinem FIndWindow(nil, 'dings'); :zwinker: mfg rob :dancer2: EDIT: :gruebel: so schnell wie ihr antwortet kann man das forum nicht mehr forum sondern chat nennen :hello: |
Re: FindWindow zum 215. Mal
So.
Ich werd mir die ganzen Dinge mal übers Wochenende durch den Kopf gehen lassen und am Montag dann mal ausprobieren. Ich meld mich dann wieder. Danke für die vielen Antworten (von denen ich nur 20% verstehe :oops: ) gtx MaxMara |
Re: FindWindow zum 215. Mal
hat zwar nichts mit dem Thema zu tun, aber egal, ich wollte nur anmerken das du kein typcastin (PChar) machen brauchst wenn du den 'test' direkt angibst
|
Re: FindWindow zum 215. Mal
Zitat:
|
Re: FindWindow zum 215. Mal
Upps, ja ... Ich gestehe: Ich bin ein "Klammerer". Wenn ich versuche, mich dem Stil anderer Entwickler anzupassen, dann komme ich garantiert mit den Klammern durcheinander. Ich bin´s eben von PHP usw. gewohnt, min. eine Klammer zu setzen. So wär´s richtig:
Delphi-Quellcode:
oder in "meinem" bevorzugten Stil:
if findwindow('TForm1',nil) <> 0 then
ShowMessage('läuft');
Delphi-Quellcode:
;)
if(findwindow('TForm1',nil) <> 0) then
ShowMessage('läuft'); |
Re: FindWindow zum 215. Mal
oder noch schöner so: :wink:
Delphi-Quellcode:
vs
if FindWindow('TForm1', nil) <> 0 then
Delphi-Quellcode:
if findwindow('TForm1',nil) <> 0 then
|
Re: FindWindow zum 215. Mal
Nein, in der Beziehung bin ich dann doch eigen. :stupid:
Solche Sachen schreibe ich klein. |
Re: FindWindow zum 215. Mal
Zitat:
|
Re: FindWindow zum 215. Mal
Hallo zusammen!
Danke nochmal für eure Antworten. Habe es jetzt mit:
Delphi-Quellcode:
gemacht und werde in Zukunft das Hauptform als ersten Schritt immer gleich umbenennen :)
if findwindow('TForm1',nil) <> 0 then
ShowMessage('läuft'); grüsse MaxMara |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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