Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: Nur Fenster unterdrücken
Mathias Kranze
| Datum:17.07.02 18:15 |
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 (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 |
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 (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 |
hatte bisher keine zeit mir das ganze anzuschauen oder zu testen......

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |