Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: Nur Fenster unterdrücken
Mathias Kranze
Datum:17.07.02 18:15 Antwortenals Email verschicken  


Ich habe ein Fenster mit dem Namen A, das über den gesamten bildschirm geht, und mit setwindowpos in den vordergrund geholt wird. Damit wird das fenster B einer fremden Anwendung unterdrückt und wird so anscheinlich nicht angezeigt.

Es ist ja normal das nun Fenster B hinter fenster A steht - immer, ist es aber möglich, Messageboxen, die von Fenster B ausgehen trotzdem im Vorderung (also vor Fenster A) anzeigen zu lassen, das eigentliche Fenter B jedoch soll im Hintergrund bleiben .........

Mathias Kranze




Gerd Telzerow
Datum:18.07.02 17:41 Antwortenals Email verschicken (GTelzerow@T-Online.de) 


Hi Matihas,

ja, es ist möglich.

Hier ein kleines Beispiel für ein Fenster,
ist aber leicht ausbaubar oder nicht?

Du musst zuerst das Prog. B im Interpreter starten und dann stehen lassen und danach gleich das Prog. A im Interpreter starten, nach 20 Sekunden hast du eine Fehlermeldung
von Prog. B, zentriert auf dem Desktop.

'********* Prog. Fenster A ***********************
Def GetWindow(2) !"USER32","GetWindow"
Def GetClassName(3) !"USER32","GetClassNameA"
Def IsWindowVisible(1) !"USER32","IsWindowVisible"
Def GetWindowLong(2) !"USER32", "GetWindowLongA"
Def GetClassLong(2) !"USER32","GetClassLongA"
Declare X1%,Y1%,x2%,Y2%
Declare Fenster&
Declare cname#
Proc TaskWindows
Declare result&,cn$
Dim cname#,64
Declare Excluded_Classnames$,icon&
' Taskbar, Desktop, Tooltips, Startmenü sollen nicht erscheinen
Let Excluded_Classnames$="SHELL_TRAYWND PROGMAN TOOLTIPS TOOLTIPS_CLASS32 BASEBAR #32768"
Let result&=GetWindow(%desktop,5)
'UseCursor 2
While Neq(result&,0)
If Neq(result&,%desktop)
' nur Fenster mit Stilbit WS_VISIBLE kommen in Frage
If Neq(IsWindowVisible(result&),0)
' Taskbar und Desktop selbst sollen nicht erscheinen
GetClassName(result&,cname#,64)
Let cn$=Upper$(String$(cname#,0))
If Equ(Instr(cn$,Excluded_Classnames$),0)
' Nur Fenster ohne Elternfenster werden angezeigt
If Equ(GetWindowLong(result&,-8),0) 'GWL_HWNDPARENT
If @Equ$(GetText$(result&)," Time-Counter v 1.0 © G. Telzerow")
Let X1%=%WinLeft
Let Y1%=%WinTop
Let x2%=%WinRight
Let Y2%=%WinBottom
Let Fenster&=Str$(result&)
SetWindowPos Str$(result&)=@Add(%WinLeft,%MaxX),%WinTop-%WinRight,%WinBottom;1
Else
Endif
EndIf
EndIf
EndIf
Let result&=GetWindow(result&,2)
Wend
Dispose cname#
'UseCursor 0
EndProc

WindowTitle "Task-Fenster"
'Aufrufen
TaskWindows
WaitInput

'Das (oder die Programme) hier Prog. B wieder zurück hollen
SetWindowPos Fenster&=X1%,Y1%-X2%,Y2%;0
@SetActiveWindow(Fenster&)

End

'********* Prog. Fenster B ***********************

SetTrueColor 1
WindowStyle 144
WindowTitle " Time-Counter v 1.0 © G. Telzerow"
Window 10,10 - 600,390
Cls @RGB(192,192,192)

Print "Testen"

PROC Schlafe
Parameters N&
Declare Ende%
SetTimer N&
Let Ende% = 0
WHILENOT Ende%
WaitInput
If %wmTimer
@MessageBox("Die Datei wurde Gelöscht !"," Datei Fehler",4112)
Let Ende% = 1
Endif
ENDWHILE
KillTimer
ENDPROC

Schlafe 20000

Print "Weiter"
waitinput

End



Mathias Kranze
Datum:20.07.02 10:55 Antwortenals Email verschicken  


danke schön!!!!!!

werde mir das jetzt mal anschauen und umbauen das das eine fenster mit winexe aufegrufen wird..

danke


Gerd Telzerow
Datum:23.07.02 22:52 Antwortenals Email verschicken (GTelzerow@Tonline.de) 


RE da das eine Fenster mit winexe aufgerufen wird..

Das spielt in meinem Beispiel keine Rolle, du könntest alle (Aktiven) Fenster in den Hintergrund verbannen.

MfG Gerd


Mathias kranze
Datum: 25.07.02 20:27 Antwortenals Email verschicken  


hatte bisher keine zeit mir das ganze anzuschauen oder zu testen......


 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
eBay