issue-#104 calling URLs and commands (InfoCmds capabilities)
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
I renamed procedures and called this new variable hideExtRunWindow because it should hide not only DosBox window.
The modification of dosCmd you can make before calling Dialog.RunExternal.
Robert, you can try new option:
http://blackboxframework.org/unstable/i ... a1.486.zip
Also I changed HostDialog.Start how it was before in 1.6.
The modification of dosCmd you can make before calling Dialog.RunExternal.
Robert, you can try new option:
http://blackboxframework.org/unstable/i ... a1.486.zip
Also I changed HostDialog.Start how it was before in 1.6.
- Josef Templ
- Posts: 2047
- Joined: Tue Sep 17, 2013 6:50 am
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
Robert, if you want to show a dos box, you can use "cmd /k myexe" in the link.
If you don't want to show it you use "myexe".
You must know up front if you want to show it or not.
You can also run a batch file that checks the return code and
does something special in case of error.
- Josef
If you don't want to show it you use "myexe".
You must know up front if you want to show it or not.
You can also run a batch file that checks the return code and
does something special in case of error.
- Josef
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
Yes, that is essentially what my own version does. Adding "cmd / k " in the calling Module, rather than in the Run procedure is not a big inconvenience, so this solves half the problem.Josef Templ wrote:Robert, if you want to show a dos box, you can use "cmd /k myexe" in the link.
NO!. This results in the very annoying (to me) behaviour that the Dos box opens, is filled with text, then disappears without a chance of reading it.If you don't want to show it you use "myexe".
Agreed. And when I don't want to show it I don't want to show it. Showing it in an unreadable form is not the same.You must know up front if you want to show it or not.
(I have just run these tests again using Dialog.Run in version 455.)
Regards
Robert
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
Sorry - I didn't notice this post before replying to Josef's.Ivan Denisov wrote:I renamed procedures and called this new variable hideExtRunWindow because it should hide not only DosBox window.
The modification of dosCmd you can make before calling Dialog.RunExternal.
Robert, you can try new option:
http://blackboxframework.org/unstable/i ... a1.486.zip
Also I changed HostDialog.Start how it was before in 1.6.
I don't have time to look at it just now, and am going away for a few days.
Robert
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
I propose a synchronous implementation for normal client use.
Ivan's asynchronous implementation can be put in its own module and activated via hook by server use.
- Helmut
Ivan's asynchronous implementation can be put in its own module and activated via hook by server use.
- Helmut
Code: Select all
PROCEDURE (h: ExtCallHook) OpenExternal* (IN fileName: ARRAY OF CHAR);
VAR res: INTEGER; win_fileName: ARRAY 512 OF CHAR; np: WinApi.PtrWSTR;
BEGIN
res := WinApi.ShellExecuteW(0, NIL, fileName, NIL, NIL, WinApi.SW_SHOWNORMAL);
IF res <= 32 THEN
(* Open failed ... *)
IF Dialog.IsWine() THEN
(* ... use winebrowser ... *)
win_fileName := "winebrowser " + fileName$;
ELSE
(* ... use absolute filename ... *)
res := WinApi.GetFullPathNameW(fileName, LEN(win_fileName), win_fileName, np);
END;
(* ... and try again *)
res := WinApi.ShellExecuteW(0, NIL, win_fileName, NIL, NIL, WinApi.SW_SHOWNORMAL);
END;
IF res <= 32 THEN
Dialog.ShowParamMsg("#System:FailedToOpen", fileName, "", "")
ELSE
(* Open command successful done. Log it for security reason *)
Dialog.ShowMsg("Dialog.OpenExternal "+fileName)
END;
END OpenExternal;
PROCEDURE (h: ExtCallHook) RunExternal* (IN exeName: ARRAY OF CHAR);
VAR res: INTEGER; info: WinApi.STARTUPINFOW; process: WinApi.PROCESS_INFORMATION;
BEGIN
WinApi.GetStartupInfoW(info);
info.wShowWindow := WinApi.SW_SHOWNORMAL;
res := WinApi.CreateProcessW(NIL, exeName, NIL, NIL, WinApi.FALSE, {}, 0, NIL, info, process);
IF ~ODD(res) THEN
Dialog.ShowParamMsg("#System:FailedToRun", exeName, "", "")
ELSE
(* Run command successful done. Log it for security reason *)
Dialog.ShowMsg("Dialog.RunExternal "+exeName)
END;
END RunExternal;
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
Helmut, I do not like that in this case the realization will not fit the i21Sys version (Actions) and even with server option in preferences external calls will hang up BlackBox.
I added threads to replace Actions.
I added threads to replace Actions.
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
You always speak about hang up BlackBox. I have not found one sample which hang up by using it .
- Helmut
- Helmut
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
You right that we need the example!Zinn wrote:You always speak about hang up BlackBox. I have not found one sample which hang up by using it .
Please compare this version:
http://blackboxframework.org/unstable/m ... a1.480.zip
and this:
http://blackboxframework.org/unstable/i ... a1.486.zip
with the new test I just prepared:
Code: Select all
StdCoder.Decode ..,, ..Ac....3Qw7uP5PRPPNR9Rbf9b8R79FTvMf1GomCrlAy2xhX,Cb2x
hXhC6FU1xhiZiVBhihgmRiioedhgrZcZRiXFfaqmSrtuGfa4700zdGrr8rmCLLCJuyKtYcZRiX
7.2.s,MYH.0k,5TWyql.bnayKmKKqGomC5XzET1.PuP.MHT9N9ntumaU2,CJuyKtQC98P9PP7O
NbXmb.2.wv6k2kfX.,6.cUGpmWLuOpoKqvCbHZiYpedhA704TeKKw.bHfEWUmL.6..D.1A06.C
cIhgsNHT9N9ntQ8qorG4704D.CbB,708T1U.k3P.T.5g,2.,.Hh.cU.ktAcoZimBhWhiohgnZc
ZRCY.2.w22U.EBE.0.4.0EJYjyC.6.VQ.ES4.1cUZT1E.6C6.c4E.k.6.e0.,6j3.8.YO2.sQX
e.OS28U0CyHZiYpcjZhYRiiocjZhYZcZRiXl,U.ES1.N.R30.k,9z3U..w,2m.E..h,8Mtr.2.
.c4E.k.Ue.E.0t.UEVzjV7AVcIZUQgpJimhgiZiUIZdgV7AV6xhnZiIhgsZi1xhipiiQechggZ
h33jZRgpZiZ3Zb2hoZikJbjwZWZhVRgfJgj3jaJiVhhZxijJifpZjJibxYdQbBAV72UKU0Ikmj
,6.252.I12U.wz.E.0.J,U.2GEOE.C.2.QC.8T5U.kOE4k6E.0U,.,Y..Y3AU5.x50.uFq8Ua5
,Ay2hgqRcjhhhBgiZgZJinpZHZCh0E.4TWKKv.Uio8.,cwU.EEE.E1U.M3646.ED.cwT.0.,,,
.B.0UJUX.,.x..U...B.0UJkzrobGoemoW0GeyqrmqtGpmCLuWokuqnKLsin4qk2aoa0pb8Je0
mdKKtOroCqmCLK0GayqnmGEWorCLu.69,7FHPMNvPDvCPM1H6Jn8I9O1HM01uMdPOTfP,ND,7I
TOGR8J9eI,7JT86ZOF5uHZ8F,78bONZ1oZ,RgoBBaGEKIbGoRqk2aEdKLr4olG500.....kI.g
V7oe,JeBAV7ohjxig2YkJiZpiu2YAxdCxc7pdIRbBAV7ogdphdRicZeZRioJbUIcDxdAhc,pdv
gVBAVEJeDRc3ZcJJe33YcAgu2Y,RgoBB6FTvCPM03OFDOGRO1HM066pND,tI9fQ.dOO5vOb98H
tCPM0aIX0Gryqv0mK0Gs8rm2Yy2Yr2aUYe6hcChV7M0NuPDf9b8RZPORvNFd6ffPfvQfPMN967
PNNPMnfC,d6HtC,7HTvNRNGR9RFtIFuHZ8JFdPTvR.amIiHEm2mIrqk2akWuIWi10LtKKv0GRq
HEuqrSrRqk2akYcT,dNHfPH166d8GU7QeZJiq,GormokGrm8LI4KK0mdK4UixhrBZBAV7g6qk2
KIb2Y2xhvM1..cIffP10.AV0,c.PM0H68AhnRiphgUQYl2ao2YeA3YcdBggFLyIsKKrKIwGrm8
Lr4KqWmHWKu.AA...U0Ua,.pND,7JZOJ9uCPM09eH.P..YcjZeZRCJtCPM0hOE0mkeHE42sC,d
QffPp76ZOR.gV7I6..EEEX4IaCpWin4ak2uoWSJI4qIin4aUiVukd.6J.Es.oBk2C3.70..Erk
Rq.R0ZPRRP8rN1Hkd.6F.8ruuKK0mdK4sQG3EEiGECHM0HMamRq.PM09eHEekRqk4KIbGYIxhj
,27ELqk48Eeyqrm4.EWyKeK4PM136F9fR7ON3PRDf9fePNvP19Nd8OHvQ,7JTvP.F0IU0CyIhg
stEYimxhgZhZJinpZH7N58RZ9P7ONbvM,Mwd0.UiQcjpho,YcZRiX3.5011.85...CLL.U2V.I
y2U.UIU.U76.0E..k.8ssHpmcIf9P9fQbf9bWGhigFWE.4Te.sQRdIf9P9HWE.8z,U.kJl1kFF
.0U1CSW5ktumdsIdPSNPN7ONbvM,Mw.ELMSN12Umz.6..FU.I90U.E,5D.oZ,Zio,dntG20U2U
...G00k.0.0.0mFf32U5Bn,sbTX,U,U.2.8Mt,,..e,2.A.c8.2UEC.6..mEw7169rwKiEw3c0
Cy2xhXNP91Cor..s2E..U6U..HE.6aLuQ0mHCe.az86Utj0WlbWaUKZM067....
--- end of encoding ---
With the first version (build #480) you will get the message in the log "unusual delay", with the second (build #486) there will be no such message.
With browser the delay is only about 150 ms. However Total Commander or other apps can give more. Anyway even this 150 ms are essential if this application in server mode.
I also made the video demonstration of this test.
- Attachments
-
[The extension mp4 has been deactivated and can no longer be displayed.]
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
IvanIvan Denisov wrote:I renamed procedures and called this new variable hideExtRunWindow because it should hide not only DosBox window.
The modification of dosCmd you can make before calling Dialog.RunExternal.
Robert, you can try new option:
http://blackboxframework.org/unstable/i ... a1.486.zip
Thanks, this works well for what I want.
But I would repeat my suggestion that the variable hideExtRunWindow is automatically reset FALSE (either by Dialog.RunExternal, or, better, by an Action created when it is set TRUE. If it is left TRUE, and forgotten about, the next person to try to use RunExternal will not know why it is apparently not working. It essentially would be a mode in BlackBox, and a pretty well hidden mode.
Robert
-
- Posts: 1700
- Joined: Tue Sep 17, 2013 12:21 am
- Location: Russia
Re: issue-#104 calling URLs and commands (InfoCmds capabilit
Automatic reset added:Robert wrote:But I would repeat my suggestion that the variable hideExtRunWindow is automatically reset FALSE (either by Dialog.RunExternal, or, better, by an Action created when it is set TRUE. If it is left TRUE, and forgotten about, the next person to try to use RunExternal will not know why it is apparently not working. It essentially would be a mode in BlackBox, and a pretty well hidden mode.
http://blackboxframework.org/unstable/i ... a1.488.zip
The summary for suggested changes:
http://redmine.blackboxframework.org/pr ... f&type=sbs