| |
|
|
E.T. | Eben benötigt: Messagebox sólo con el "Abbrechen" - Button (así como Art Referencia-Box) Bisher posible:
0 - OK (~MB_OK) 1 - OK Alto (~MB_OKCANCEL) 2 - Alto Wiederholen Ignorieren (~MB_ABORTRETRYIGNORE) 3 - Sí Nein Alto (~MB_YESNOCANCEL) 4 - Sí Nein (~MB_YESNO) 5 - Wiederholen Alto (~MB_RETRYCANCEL)
Hm, ~MB_CANCEL gibts sí wohl (lt. Konstantin Opel) no, aber vlt. ha sí alguien dafür 'ne Solución ?? In diesem zusammenhang dürfte nat. el Prog no en el M-Box warten pero debería más laufen. Dafür debería una continuación aber otra vez el Handle el M-Box wissen, en esta abzufragen...
Hintergrund: Programa liest Daten una, Ventana principal se "deaktiviert". Exactamente en diesem Fall debería una M-Box con el Referencia "Programm liest Daten ein" (oder algo como) erscheinen, welche el Nutzer el Möglichkeit son, todos abzubrechen.
Oder restos como sólo, el Referencia-Ventana komplett incluso a redactar ?? |
|
|
| 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 | Was spricht dagegen, con "Ok" a bestätigen, el Referencia gelesen a haben? Das son zumindest el de Windows bereitgestellten Messageboxtypen.
Si el Programa weiterlaufen se, musst Usted el Hinwweisfenster eh' incluso redactar (oder una eigenen Prozess uso).
Saludo 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 ▲ |
|
|
|
|
| ... oder una eigenen Hilo uso oder _ohne eigenen Hilo con el
SetTimer-API una APC en el Hauptthread injizieren.
Schaue Usted auch veces el Incluir asyncMsgBox.inc a: [...]
Aus el Okrea-Code Yo grad: rausgefitzelt -
así ermittelt al Handle des OK-Buttons si al MessageBox-Fensterhandle sabe.
Si usted así no weiterkommst entonces simplemente otra vez informe. |
|
|
| |
|
|
|
| Hihi,
schauma: Descargar externer Descargar
{$cleq}
const asyncMessageBox.Message=1025
declarar asyncMessageBox.C&
decimals 0
proc asyncMessageBox
parámetros 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&)
mientras que long(h&,0)
sleep 10
wend
whileloop 100
wend
var msg&=long(h&,16)
mensajes de los usuarios asyncMessageBox.Message
globalFree(h&)
var msgboxWnd&=findWindow("."+str$(hWnd)+"."+str$(asyncMessageBox.C&))
settext msgboxWnd&,tit$
volver msgboxWnd&
ENDPROC
nProc asyncMessageBox.createThread
parámetros h&
createThread(0,0,procAddr(asyncMessageBox.thread,1),h&,0,0)
ENDPROC
nProc asyncMessageBox.wndProc
Parámetros wnd&,msg&,wp&,lp&
if msg&=asyncMessageBox.Message
sendMessage(hWnd,asyncMessageBox.Message,wnd&,lp&)
destroyWindow(wnd&)
volver 0
endif
volver callWindowProc(getWindowLong(wnd&,gwl_userData),wnd&,msg&,wp&,lp&)
ENDPROC
nproc asyncMessageBox.thread
parámetros h&
var s$=cadena$(long(h&,0),0)
var tit$=cadena$(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&))
volver 0
ENDPROC
cls
var myMsgBoxWnd&=asyncMessageBox(desktop,"Huhu","Titel",mb_ok)
settext findWindowEx(myMsgBoxWnd&,0,"BUTTON","OK"),"&Abbrechen"
mientras que 1
waitinput
wend
end
Oder hiermit zählts hübsch runter y schließt se selbständig:
cls
var myMsgBoxWnd&=asyncMessageBox(desktop,"Huhu","Titel",mb_ok)
var btn&=findWindowEx(myMsgBoxWnd&,0,"BUTTON","OK")
var c&=10
mientras que (c&+2) and isWindow(myMsgBoxWnd&)
waitinput 1000
settext btn&,"&Abbrechen ["+str$(c&)+"]"
sub c&,1
wend
caso isWindow(myMsgBoxWnd&) : sendMessage(myMsgBoxWnd&,wm_close,0,0)
imprimir "fertsch"
mientras que 1
waitinput
wend
end
|
|
|
| |
|
|
|
| Und hier veces rein por Externo:
'{$ Cleq}
decimals 0
cls
var myTimer&=external("user32","SetTimer",0,0,100,procAddr(myMessageBoxAPCProc,4))
imprimir messageBox("Text","."+str$(%hWnd)+".¡Hola Welt!",0)
waitinput
end
proc myMessageBoxAPCProc
parámetros wnd&,msg&,id&,tme&
var s$="."+str$(%hWnd)+"."
var msgboxWnd&=findWindow(s$)
casenot msgboxWnd& : volver
external("user32","KillTimer",0,myTimer&)
settext msgboxWnd&,del$(getText$(msgboxWnd&),1,len(s$))
var btn&=external("user32","FindWindowExA",msgboxWnd&,0,"BUTTON","OK")
casenot btn& : volver
setText btn&,"&Abbrechen"
endProc
Damit el así geschrieben aber wiederum 100%ig (en lugar de 99%ig) "absturzsicher" es, debería algo como Roland nativ einbauen porque una APC en una interpretierte XProfan- Proc kann siempre abstürzen besonders desto komplexer y größer el Programa es. |
|
|
| |
|
|