Entwickler-Ecke
Windows API - Hide bei "ALT + TAB" möglich?
sheeeeriff - Fr 19.09.08 20:10
Titel: Hide bei "ALT + TAB" möglich?
Hi erstmal ... bin neu hier
Als ich neulich eine Binäruhr bzw. einen Terminplaner programmiert habe, traf ich auf folgendes Problem. Da die Programme immer im Hintergrund aktiv sind, habe ich " ShowWindow( Application.Handle, SW_HIDE );" angewendet. Denn es stört, wenn diese Programm ándauernd angezeigt werden. Nun gibt es unter Windows die nette Tastenkombination "ALT + TAB", welche es ermöglicht, zwischen Fenstern hin und her zu schalten. Da ergibt sich mir die Frage: Wie bekomme ich meine Applikation aus diesem kleinen Fenster? ...
Danke im voraus
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 19.09.2008 um 20:18
Yogu - Fr 19.09.08 21:54
Hallo und :welcome: im Delphi-Forum,
sheeeeriff!
sheeeeriff hat folgendes geschrieben: |
| Da die Programme immer im Hintergrund aktiv sind, habe ich " ShowWindow( Application.Handle, SW_HIDE );" angewendet. |
Delphi bietet die praktische Funktion namens
Hide, die genau diese Aktion durchführt. ;)
sheeeeriff hat folgendes geschrieben: |
| Nun gibt es unter Windows die nette Tastenkombination "ALT + TAB", welche es ermöglicht, zwischen Fenstern hin und her zu schalten. Da ergibt sich mir die Frage: Wie bekomme ich meine Applikation aus diesem kleinen Fenster? ... |
Ich habe gerade kein Delphi gestartet, aber vielleicht erledigt sich das ja, wenn du
Hide verwendest.
Grüße,
Yogu
sheeeeriff - Sa 20.09.08 00:06
Danke erstmal für deine Antwort :D
ICh denke du hast mich falsch verstanden. ICh möchte nicht das "Form" verstecken, sondern den Eintrag, welcher bei der Kombination "ALT-TAB" erscheint
lg
elundril - Sa 20.09.08 01:36
Aso, na sag das doch gleich! :mrgreen:
Also mit diesem Code denk ich schaffst du das was du vor hast:
Delphi-Quelltext
1: 2: 3: 4: 5:
| ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); |
lg elundril
sheeeeriff - Sa 20.09.08 09:48
Ich hab deinen Quelltext mal eingefügt, jedoch erfüllt er nicht das, was ich möchte. :( ...
Es ist immer noch im Taskmanager. Ich möchte es auch nicht aus dem Taskmanager, sonder nur aus dem kleinen Fenster, welches kommte, wenn man "ALT+TAB" drückt.
lg
alzaimar - Sa 20.09.08 09:53
Versuch doch mal
Delphi-Quelltext
1:
| Application.ShowMainForm := False; |
sheeeeriff - Sa 20.09.08 10:12
Ok vielleich war meine Beschreibung des Programms schlecht.
-->
Also mein Programm befindet sich oben rechts am Bildschirm rand. Klick man drauf fährt es raus und klickt man auf eine andere Applikation, fährt es rein (AUßerhalb des Bildschirm randes). Auf dem besagten Programm kann man dann 3 Notizen eintragen, welche mit einem Datum und einer Zeit versehen werden.
In dem Fall geht "Application.ShowMainForm := False;" nicht, weil es auch das Fenster versteckt. Mein Wunsch wird leider nur zur Hälfte erfüllt. :(
elundril - Sa 20.09.08 13:57
mein code sollte eigentlih genau das machen was du sagst! wo hast du den code denn hinkopiert?
lg elundril
sheeeeriff - Sa 20.09.08 17:07
Einmal bei OnShow probiert und einmal bei OnCreate.
elundril - Sa 20.09.08 17:18
probiers mal so:
Delphi-Quelltext
1: 2: 3: 4: 5:
| ShowWindow( Handle, SW_HIDE ); SetWindowLong( Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Handle, SW_SHOW ); |
jetzt sollte es eig. für das formular gelten und nicht für das programm.
(im oncreate)
lg elundril
sheeeeriff - Sa 20.09.08 17:48
Leider nein D:
elundril - Sa 20.09.08 17:50
was für ein delphi benutzt du? und zeig mir mal deine uses liste bitte.
sheeeeriff - So 21.09.08 00:54
Delphi-Quelltext
1: 2: 3:
| uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, IniFiles, Menus; |
und ich nutze Delphi 2005
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
Sylvus - So 21.09.08 17:07
Yeah ich habs endlich!!!!!!!!!!!!!!
So folgender Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.FormShow(Sender: TObject); var Owner: HWnd; begin Owner := GetWindow(Handle, GW_OWNER); SetWindowLong( Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow(Owner, SW_HIDE); end; |
Viel Spass damit, benutzte es jetzt auch so! :)
Liebe Grüße Sylvus
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt
sheeeeriff - So 21.09.08 18:21
Sylvus ich dank dir :D ... selber wäre ich da nie drauf gekommen ... leigt sicher daran, dass ich noch nicht so lange code :D
Mr_Emre_D - Di 30.09.08 01:54
Ähm, wenn die Form nicht benützt wird - also wenn sie nur betrachtet werden soll (Uhr)- dann würde ich einfach Enabled auf False setzen !
Und ...
Delphi-Quelltext
1:
| SetWindowLong( Handle, GWL_ExStyle, WS_EX_ToolWindow and not WS_EX_AppWindow ); |
machts auch :P
Moderiert von
matze: Code- durch Delphi-Tags ersetzt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!