如果我在 Windows 10 中同時開啟兩個不同版本的 JMP 流程。
我:\00\jmp17\jmp.exe
我:\00\jmp16\jmp.exe
首先打開 JMP 17。
如何在 JMP 17 中編寫 JSL 實作以在 JMP 16 中已開啟的電腦上執行另一個 JSL?
說明 為了加快回應速度,需要在 JMP 16 中執行另一個已開啟的 JSL
此螢幕截圖是已開啟的 JMP 16
謝謝!

我能想到的有幾個選擇:
1. 使用Socket(從腳本索引中查看)。 因此,您的 JMP17 將與端口通信,而您的 JMP16 將監聽端口,並做出相應反應。
2. 使用「運行程式」(從腳本索引中查看)。 為此,JMP16 不知道 JMP17 的存在。
好奇為什麼是 JMP17 和 JMP16。 為什麼不是 JMP17 和 JMP17? 聽起來您想解決一些不便。 那是什麼?
是的,我經常同時開啟多個 JMP 進程。
同時使用JMP16和17,點選更方便。
如果兩個行程都是 JMP 17,是不是比較容易聽?
如何用JSL來實現呢?
我現在正在使用AutoHotkey來協助實施。
感謝專家!
我認為除了資源消耗問題之外,沒有什麼可以阻止您同時運行兩個或更多 JMP17。 擁有兩個相同版本的 JMP 可以避免您因意外但可能的兼容性問題而頭痛。
以下範例基於 OSI > Socket > Listen 中的範例。
這是 JMP 上偵聽的腳本:
skt = socket();
skt << bind( "localhost", "80" );
skt << ioctl( FIONBIO, 1 );
skt << listen();
while ( 1,
Wait( 1 );
rc = skt << accept();
If( Starts With( rc[2], "WOULDBLOCK" ),
Print( "no connect attempt yet" )
,
If( rc[2] == "ok",
remoteaddr = rc[3];
Write( "\!nConnection from ", remoteaddr );
conskt = rc[4];
rc = conskt << recv( 1000 );
show(rc);
msg = Blob To Char( rc[3], encoding= "utf-8" );
show(msg);
if (msg=="Stop Listening",
skt << close();
stop()
);
continue();
,
Show( rc );
skt << close();
stop();
)
);
);
這是 JMP 上的腳本:
skt = socket();
skt << connect( "localhost", "80" );
skt << send(Char to Blob("Hello world!"));
skt << close();
skt = socket();
skt << connect( "localhost", "80" );
skt << send(Char to Blob("Stop Listening"));
skt << close();
這是使用運行程序的範例:
Save Text File( "$TEMP/listener.jsl", "\[Show("Hello World!")]\" );
Open("$TEMP/listener.jsl");
rp = Run Program(
Executable("...path to your \Jmp.exe"),
Options({"-FILE \!"" || substr(Get Path Variable( "TEMP" ),2) || "listener.jsl\!""});
);
rp << Is Read EOF;
wait(0);