Entwickler-Ecke
Windows API - Handle vom eigenem Programm
DeCodeGuru - Mo 30.09.02 19:19
Titel: Handle vom eigenem Programm
Hi Leutz,
ich möchte mich jetzt mal wieder blamieren und habe eine schöne Frage für euch :mrgreen: und zwar: Wie bekomme ich das Handle meiner Anwendung raus?
P.S.: Das Programm hat keine Oberfläche, also keine VCL und ein Objekt vom Typ TApplication gibt es nicht.
tommie-lie - Mo 30.09.02 19:43
Wie jetz? DeCodeGuru kennt etwas nciht?
Wo gibt's denn das?
DeCodeGuru - Mo 30.09.02 19:47
hier!!! :oops: ich geh ja schon in die Ecke und schäme mich :wink:
Motzi - Mo 30.09.02 19:49
Was konkret meinst du mit "Handle meiner Anwendung" ?? Das Handle deines Fensters, hInstance, ... ??
DeCodeGuru - Mo 30.09.02 19:57
ich meinte das Handle meines Processes und zwar habe ich ein Prob. Ich will in meiner Anwendung den Titel ändern. Normalerweise würde ich das ja mit Application.Title machen, allerdings geht das ja nicht, da es in meiner Anwendung kein Application gibt. Wie kann ich also den Titel der Anwendung ändern?
Delete - Mo 30.09.02 21:30
Habe ich da einen Widerspruch entdeckt?
der ratlose DeCodeGuru hat folgendes geschrieben: |
Das Programm hat keine Oberfläche |
DeCodeGuru hat folgendes geschrieben: |
Ich will in meiner Anwendung den Titel ändern |
Wie, wenn es gar keine Oberfläche hat?
Also, ich rate jetzt mal -
Wenn du ein Fenster erzeugst, mit "CreateWindowEx", dann hast du im Normalfall eine Nachrichtenfunktion, "WndProc" o.ä., in der du bei WM_CREATE den Fenstertitel ändern könntest:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| function WndProc(wnd: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; begin Result := 0;
case uMsg of WM_CREATE: begin buf := 'Hallo, DeCodeGuru'; SetWindowText(wnd // <-- !,buf); end; ... |
"buf" ist ein Array-of-char, und den Rest spare ich mir.
Bei Dialogressourcen ist es nicht anders, nur dass du es da in der WM_INITDIALOG machst.
Hilft das schon?
Wahrscheinlich nicht. ... :? Aber das ist eben schwer, wenn man nicht weiß, ob dein Programm nun ein Fenster hat usw.
DeCodeGuru - Mo 30.09.02 21:43
jo, ich merke ich habe mich sehr schlecht ausgedrückt. Also neuer Versuch:
Wenn ich folgenden Code schreibe,
Application.Title := 'Was weiss ich' dann ändert sich ja nicht der Titel von meiner Form. Das sehe ich doch richtig, oder? Gut :mrgreen:
Wenn ich jetzt aber per ShowMessage einen Wert anzeigen lasse, dann steht im Titel des Fenster der Titel, den ich bei Application.Title übergeben habe. So, wenn ich jetzt nur mit dem Titel des Fensters ein Problem hätte, dann würde ich ja ne MessageBox nehmen. Naja, ich würde ja gerne Application.Title verwenden und da nen Wert zuordnen nur da gibt es ein winziges Problem: Application, existiert ja nicht. :wink:
Ich hoffe, ihr habt jetzt mein kleines Problem verstanden.
Delete - Mo 30.09.02 21:57
Nein. Es ist schlimmer geworden.
Mit Application.Title änderst du den Taskbareintrag.
DeCodeGuru - Mo 30.09.02 22:06
schon wieder nich richtig ausgedrückt :( was heute los mit mir? Achja, ich habe ja Ferien :wink:
Zitat: |
Mit Application.Title änderst du den Taskbareintrag. |
Mehr wollte ich zunächst nicht ändern.
Delete - Mo 30.09.02 22:10
Wie sieht den dein Code aus? So ohne Form.
DeCodeGuru - Mo 30.09.02 22:19
ich poste jetzt mal nicht den kompletten Code.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| begin ReadInformation;
Server := TServer.Create(nil); with Server do begin Port := StrToInt(ServerInf.Port); OnClientRead := ClientRead; OnClientConnect := ClientConnect; OnClientDisconnect := ClientDisconnect; AuthenticationStatus := 0; Open; end;
while GetMessage(Msg, 0, 0, 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end;
ExitCode := Msg.wParam; end. |
Ansonsten funktioniert das Programm einwandfrei. Auch wenn das jetzt nicht funktionieren sollte, wäre es auch nicht schlimm. Da ich jetzt den Code poste, fällt mir eben auf, dass ich das erstellen des Servers ohne try...except gemacht habe. :oops:
Delete - Mo 30.09.02 22:30
Hm, sieht schlecht aus würde ich sagen. In der Taskleiste steht wohl der Name der Exe oder?
DeCodeGuru - Mo 30.09.02 22:42
ja, stimmt. Wenn euch keine Lösung einfällt und mir auch nicht, dann ist das auch nicht schlimm.
Delete - Mo 30.09.02 22:47
Warum willst du wärend der Laufzeit den Titel ändern?
Binde die Windows.pas und Messages.pas ein, dann kannst du Statusmeldungen mit der API-Messagebox ausgeben.
DeCodeGuru - Mo 30.09.02 22:51
das habe ich ja jetzt auch gemacht :wink:
Delete - Mo 30.09.02 22:54
Na dann.
DeCodeGuru - Di 01.10.02 09:17
Selbsthilfe nennt man das :mrgreen: :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!