Wenn ich in Windows 10 zwei verschiedene Versionen von JMP-Prozessen gleichzeitig geöffnet habe.
I:\00\jmp17\jmp.exe
I:\00\jmp16\jmp.exe
JMP 17 wird zuerst geöffnet.
Wie schreibe ich eine JSL-Implementierung in JMP 17, um eine andere JSL auf einem Computer in JMP 16 auszuführen, die bereits geöffnet ist?
Hinweis Um die Antwort zu beschleunigen, ist es erforderlich, eine andere JSL in JMP 16 auszuführen, die bereits geöffnet ist
Dieser Screenshot zeigt JMP 16, das bereits geöffnet ist
Danke!

Es gibt ein paar Optionen, die mir einfallen:
1. Verwenden Sie Socket (siehe Scripting Index). Ihr JMP17 kommuniziert also mit einem Port und Ihr JMP16 hört auf einen Port und reagiert entsprechend.
2. Verwenden Sie „Programm ausführen“ (siehe Scripting Index). Aus diesem Grund ist dem JMP16 die Existenz von JMP17 nicht bekannt.
Neugierig, warum JMP17 und JMP16. Warum nicht JMP17 und JMP17? Klingt, als gäbe es einige Unannehmlichkeiten, die Sie umgehen möchten. Was ist das?
Ja, ich habe oft mehrere JMP-Prozesse gleichzeitig geöffnet.
Verwenden Sie JMP16 und 17 gleichzeitig. Dies erleichtert das Klicken.
Ist es einfacher zuzuhören, wenn beide Prozesse JMP 17 sind?
Wie implementiert man es mit JSL?
Ich verwende jetzt AutoHotkey, um bei der Implementierung zu helfen.
Danke Experten!
Ich glaube nicht, dass irgendetwas Sie davon abhält, zwei oder mehr JMP17 gleichzeitig auszuführen, außer Bedenken hinsichtlich des Ressourcenverbrauchs. Wenn Sie zwei JMP derselben Version haben, ersparen Sie sich einige Kopfschmerzen aufgrund unerwarteter, aber möglicher Kompatibilitätsprobleme.
Hier ist ein Beispiel basierend auf dem Beispiel von OSI > Socket > Listen.
Dies ist das Skript auf dem JMP, das lauscht:
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();
)
);
);
Dies ist das Skript auf dem JMP, das besagt:
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();
Dies ist ein Beispiel für die Verwendung von Run Program:
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);