Autor Beitrag
sheeeeriff
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 19.09.08 20:10 
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 user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 19.09.2008 um 20:18
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 19.09.08 21:54 
Hallo und :welcome: im Delphi-Forum, user profile iconsheeeeriff!

user profile iconsheeeeriff 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. ;)

user profile iconsheeeeriff 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  ShowWindow( Application.Handle, SW_HIDE );         //Application verstecken
  SetWindowLong( Application.Handle, GWL_EXSTYLE,                    //Application für Taskmanager unsichtbar machen
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_SHOW );         //Application wieder anzeigen


lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 20.09.08 09:53 
Versuch doch mal
ausblenden Delphi-Quelltext
1:
Application.ShowMainForm := False;					

_________________
Na denn, dann. Bis dann, denn.
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 20.09.08 17:07 
Einmal bei OnShow probiert und einmal bei OnCreate.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 20.09.08 17:18 
probiers mal so:

ausblenden 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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 20.09.08 17:48 
Leider nein D:
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 20.09.08 17:50 
was für ein delphi benutzt du? und zeig mir mal deine uses liste bitte.

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 21.09.08 00:54 
ausblenden 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 user profile iconChristian S.: Delphi-Tags hinzugefügt
Sylvus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: So 21.09.08 17:07 
Yeah ich habs endlich!!!!!!!!!!!!!!

So folgender Code:

ausblenden 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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
sheeeeriff Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 114
Erhaltene Danke: 14



BeitragVerfasst: 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 ...
ausblenden Delphi-Quelltext
1:
  SetWindowLong( Handle, GWL_ExStyle, WS_EX_ToolWindow and not WS_EX_AppWindow );					

machts auch :P

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt