| |
|
|
E.T. | plan nécessaire: Messagebox seulement avec dem "Abbrechen" - Button (so comme Art Hinweis-Box) Bisher possible:
0 - OK (~MB_OK) 1 - OK démolir (~MB_OKCANCEL) 2 - démolir Wiederholen ignorer (~MB_ABORTRETRYIGNORE) 3 - oui non démolir (~MB_YESNOCANCEL) 4 - oui non (~MB_YESNO) 5 - Wiederholen démolir (~MB_RETRYCANCEL)
Hm, ~MB_CANCEL gibts oui wohl (lt. Konstantin Opel) pas, mais vlt. hat oui quelqu'un pour 'ne Solution ?? dans diesem zusammenhang pourrait nat. cela Prog pas sur qui M-Box attendre mais devrait plus courir. Pour cette devrait on ensuite mais wieder cela Handle qui M-Box savons, um cet abzufragen...
Hintergrund: Programme liest données un, Hauptfenster wird "deaktiviert". oui c'est ca dans diesem le cas sollte une M-Box avec dem Hinweis "Programm liest données ein" (ou bien quelque chose comme) erscheinen, quelle dem Nutzer qui Possibilité gibt, cela ganze abzubrechen.
ou bien bleibt là seulement, cela Hinweis-la fenêtre komplett selbst trop erstellen ?? |
|
|
| XProfan X2Grüß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... | 29.06.2012 ▲ |
|
|
|
|
RGH | quoi spricht dagegen, avec "Ok" trop bestätigen, den Hinweis gelesen trop avons? ce sont zumindest qui de Windows bereitgestellten Messageboxtypen.
si cela Programme weiterlaufen soll, musst Du cela Hinwweisfenster eh' selbst erstellen (ou bien une eigenen Prozess verwenden).
Salut Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 29.06.2012 ▲ |
|
|
|
|
| ... ou bien une eigenen Fil verwenden ou bien _ohne eigenen Fil avec qui
SetTimer-API une APC dans den Hauptthread injecter.
Schaue Dir aussi fois le Include asyncMsgBox.inc à: [...]
Aus dem Okrea-Code habe je grad: rausgefitzelt -
avec cela ermittelt on cela Handle des OK-Buttons si on cela MessageBox-Fensterhandle kennt.
si Du avec cela pas weiterkommst ensuite simple nochmal annoncer. |
|
|
| |
|
|
|
| Hihi,
schauma: Herunterladen externer Télécharger
{$cleq}
const asyncMessageBox.Message=1025
declare asyncMessageBox.C&
decimals 0
proc asyncMessageBox
parameters wnd&,s$,tit$,mode&
add asyncMessageBox.C&,1
var h&=globalAlloc(gPTR,24)
long h&,0=addr($ S),addr(tit$),mode&,wnd&,create("text",hWnd,»,0,0,0,0),asyncMessageBox.C&
setWindowLong(long(h&,16),gwl_userdata,setWindowLong(long(h&,16),gwl_wndProc,procaddr(asyncMessageBox.wndProc,4)))
asyncMessageBox.createThread(h&)
tandis que long(h&,0)
sleep 10
Wend
whileloop 100
Wend
var msg&=long(h&,16)
messages de l'utilisateur asyncMessageBox.Message
globalFree(h&)
var msgboxWnd&=findWindow("."+str$(hWnd)+"."+str$(asyncMessageBox.C&))
settext msgboxWnd&,tit$
return msgboxWnd&
endproc
nProc asyncMessageBox.createThread
parameters h&
createThread(0,0,procAddr(asyncMessageBox.thread,1),h&,0,0)
endproc
nProc asyncMessageBox.wndProc
Paramètres wnd&,msg&,wp&,lp&
si msg&=asyncMessageBox.Message
sendMessage(hWnd,asyncMessageBox.Message,wnd&,lp&)
destroyWindow(wnd&)
return 0
endif
return callWindowProc(getWindowLong(wnd&,gwl_userData),wnd&,msg&,wp&,lp&)
endproc
nproc asyncMessageBox.thread
parameters h&
var s$=string$(long(h&,0),0)
var tit$=string$(long(h&,4),0)
var mode&=long(h&,8)
var wnd&=long(h&,12)
var trd&=long(h&,16)
long h&,0=0
sendMessage(trd&,asyncMessageBox.Message,0,messageBox(wnd&,s$,"."+str$(hWnd)+"."+str$(long(h&,20)),mode&))
return 0
endproc
cls
var myMsgBoxWnd&=asyncMessageBox(desktop,"Huhu","Titel",mb_ok)
settext findWindowEx(myMsgBoxWnd&,0,"BUTTON","OK"),"&Abbrechen"
tandis que 1
waitinput
Wend
end
ou bien hiermit zählts joli runter et schließt sich selbständig:
cls
var myMsgBoxWnd&=asyncMessageBox(desktop,"Huhu","Titel",mb_ok)
var btn&=findWindowEx(myMsgBoxWnd&,0,"BUTTON","OK")
var c&=10
tandis que (c&+2) and isWindow(myMsgBoxWnd&)
waitinput 1000
settext btn&,"&Abbrechen ["+str$(c&)+"]"
sub c&,1
Wend
cas isWindow(myMsgBoxWnd&) : sendMessage(myMsgBoxWnd&,wm_close,0,0)
imprimer "fertsch"
tandis que 1
waitinput
Wend
end
|
|
|
| |
|
|
|
| et ici la fois rein per Externe:
'{$ Cleq}
decimals 0
cls
var myTimer&=external("user32","SetTimer",0,0,100,procAddr(myMessageBoxAPCProc,4))
imprimer messageBox("Text","."+str$(%hWnd)+".allô monde!",0)
waitinput
end
proc myMessageBoxAPCProc
parameters wnd&,msg&,id&,tme&
var s$="."+str$(%hWnd)+"."
var msgboxWnd&=findWindow($ S)
casenot msgboxWnd& : return
external("user32","KillTimer",0,myTimer&)
settext msgboxWnd&,del$(getText$(msgboxWnd&),1,len($ S))
var btn&=external("user32","FindWindowExA",msgboxWnd&,0,"BUTTON","OK")
casenot btn& : return
setText btn&,"&Abbrechen"
endProc
avec cela cela so geschrieben mais wiederum 100%ig (statt 99%ig) "absturzsicher" ist, devrait quelque chose comme Roland nativ einbauen car un APC sur une interpretierte XProfan- Proc peux toujours abstürzen besonders desto komplexer et größer cela Programme ist. |
|
|
| |
|
|