| |
|
|
| Der untenstehende Code ist nur ein Beispiel. Zeigt aber mein Problem. Nach Aufruf und Beenden des Papierkorbes (oder einer anderen Windows-Funktion) soll eine Aktion stattfinden - hier die Messagebox. Leider wird die Box aber sofort gezeigt und dann erst wird der Papierkorb gestartet. Wie kann ich das ändern ? KompilierenMarkierenSeparierenDECLARE EE%,ende%,aufruf%
EE%=0
----------------------------------------------
PROC MELDUNG
Messagebox("Es ist vollbracht !","Meldung",64)
ENDPROC
PROC STARTE_AUFRUF
Papierkorb starten - Es kann auch eine andere Windows-Funktion sein - Das ist nur ein Beispiel
WinExec("explorer /n,::{645FF040-5081-101B-9F08-00AA002F954E}",1)
MELDUNG Der Aufruf soll erst nach dem Schliessen des Papierkorbes angezeigt werden
ENDPROC
----------------------------------------------
CLS
ende%=Create("Button",%hwnd,"Ende",10,10,100,25)
aufruf%=Create("Button",%hwnd,"Windows-Papierkorb",10,50,200,25)
WhileNot EE%
WAITINPUT
Case CLICKED(ende%):EE%=1
Case CLICKED(aufruf%):STARTE_AUFRUF
EndWhile
end
Danke für Hilfe |
|
|
| |
|
|
|
RGH | Hallo Horst,
WinExex startet ein Programm und kehrt sofort zurück, ohne das Ende des Programmes abzuwarten. Willst Du warten, bis das aufgerufene Progamm beendet wurde, mußt Du WinExecWait verwenden.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 22.10.2008 ▲ |
|
|
|
|
| Man bin ich doof - steht groß und deutlich in der Hilfe - Danke Roland (man wird eben alt !) |
|
|
| |
|
|
|
RGH | Hallo Horst, für Dein spezielles Problem war meine Antwort etwas voreilig. Hier wartet WinExecwait nur unwesentlich länger, nämlich bis das Öffnen des Papierkorbes abgeschlossen ist. Wenn Du aber warten willst, bis das Explorerfenster des Papierkorbes geschlossen wird, müßtest Du warten, bis kein Fenster mit dessen Überschrift mehr existiert. So funktioniert es bei mir: KompilierenMarkierenSeparierenDECLARE EE%,ende%,aufruf%
EE%=0
----------------------------------------------
PROC MELDUNG
Messagebox("Es ist vollbracht !","Meldung",64)
ENDPROC
PROC STARTE_AUFRUF
Declare Papierkorb&
Papierkorb starten - Es kann auch eine andere Windows-Funktion sein - Das ist nur ein Beispiel
WinExec("explorer /n,::{645FF040-5081-101B-9F08-00AA002F954E}",1)
warten, bis das Fenster tatsächlich existiert
Repeat : Until FindWindow("Papierkorb") <> 0
warten, bis es wieder weg ist
Repeat : Until FindWindow("Papierkorb") = 0
MELDUNGDer Aufruf soll erst nach dem Schliessen des Papierkorbes angezeigt werden
ENDPROC
----------------------------------------------
CLS
ende%=Create("Button",%hwnd,"Ende",10,10,100,25)
aufruf%=Create("Button",%hwnd,"Windows-Papierkorb",10,50,200,25)
WhileNot EE%
WAITINPUT
Case CLICKED(ende%):EE%=1
Case CLICKED(aufruf%):STARTE_AUFRUF
EndWhile
end
|
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 22.10.2008 ▲ |
|
|
|
|
| Nach "Papierkorb" suchen?
In diesem Fall sollte man sich eher damit abfinden, dass die Operation nunmal asynchon abläuft. (wie es auch gedacht ist)
Wer so gezielt jedoch den Papierkorb "verwalten" möchte, der müsste halt die Papierkorb-APIs anwenden. |
|
|
| |
|
|
|
| @iF Das war nur ein Beispiel - Es geht um 15 verschiedene Windows-Funktionen, die wahlweise gestartet werden können und hier soll nach dem Schliessen der jeweiligen Funktion eine Aktion stattfinden ! - Compri ??? |
|
|
| |
|
|
|
| Ich nix Compri Problem. Compri doch mal auch gleich Herunterfahren. Ist ja auch eine "Windows-Funktion". Eine 16.! Nur ein <b>Beispiel</b>! |
|
|
| |
|
|
|
| @Lieber iF In einem kleinen Tool aus meiner Feder werden im Menu 15 Windows-Funktionen zur Verfügung gestellt. (der Code dafür schwirrte hier irgendwo rum) - Um aber bei diesem Programm Set("Autopaint",0) zu umgehen, muss ich aus einem bestimmten Grund NACH dem Schliessen der jeweiligen Windows-Funktion eine bestimmte Procedur aufrufen (ein Teil der Oberfläche (Icons) wird nämlich durch das neu geöffnete Fenster gelöscht) und mit dieser Procedur werden diese Icons wieder hergestellt. So, wie dankenswerterweise Roland mir geholfen hat, funktioniert die Sache jetzt. Compri ? |
|
|
| |
|
|
|
Jörg Sellmeyer | und jetzt Alle: "Ich soll in einem anspruchsvollen und vernünftig erscheinenden Programm kein "DrawIcon" verwenden, sondern mit Create() ein Handle erzeugen und das einem Static zuweisen!" . . . . . . . . . Amen! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.10.2008 ▲ |
|
|
|
|
E.T. |
Jörg Sellmeyer: und jetzt Alle: "Ich soll in einem anspruchsvollen und vernünftig erscheinenden Programm kein "DrawIcon" verwenden, sondern mit Create() ein Handle erzeugen und das einem Static zuweisen!" .
In XP10 hab das Handle dann einem Control zugewiesen (zuweisen müssen, weils ein Button mit 2-zeiligem Text war), und hab das Dingens immer "refresht", wenn ich aus einer waitinput-Schleife zurück war.
Obs jetzt in XP11 einfacher geht, muß ich erst mal checken (habs erst seit ner Woche) |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 22.10.2008 ▲ |
|
|
|
|
| @Jörg - für Alle
CASE 1L$ > "":w32_DrawIcon(%hdc,340,265,ExtractAssociatedIcon(1L$+"\",1))
Dann mach mal ;) |
|
|
| |
|
|
|
Andreas Miethe
| Horst Horn
@Jörg - für Alle Horst HornCASE 1L$ > "":w32_DrawIcon(%hdc,340,265,ExtractAssociatedIcon(1L$+"\",1)) Dann mach mal ;)
Verstehe zwar nicht wie der Code mit fehlenden Parametern funktionieren soll, aber so sollte es gehen.
Horst Horn
CASE 1L$ > "":w32_DrawIcon(%hdc2,340,265,ExtractAssociatedIcon(1L$+"\",1)):repaint |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 25.10.2008 ▲ |
|
|
|