HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0613
UMAコマンドプロンプト7解決


UMA

リンク

2015/6/13(Sat) 16:37:50|NO.69769

HSPでexec命令を使ってコマンドプロンプトを起動した時に、コマンドプロンプトのログ(?) (結果です)を取得するにはどうすればいいですか?
簡単に言いますと、 exec "cmd tree c:\\ /f"としたときにツリーの結果を変数に読み込み、mesboxなどで表示したいということです。
できれば、リアルタイムに読み込みたいです。(tree命令とかを)



この記事に返信する


kanamaru

リンク

2015/6/13(Sat) 18:21:13|NO.69770

その前に、
コマンドラインからコマンドを実行するための記述が間違っている気がします。
exec “cmd /c tree /f”
だと思います。
で、コマンドの結果をファイルに保存する方法ですが、
次のようにします。
exec “cmd /c tree c:\\/f > tree.txt”



UMA

リンク

2015/6/13(Sat) 19:59:34|NO.69774

ファイルに保存するのではなく、HSP3Dishのビルド中みたいに、リアルタイムでコマンドプロンプトの内容を確認できませんか?



cats

リンク

2015/6/13(Sat) 20:13:34|NO.69775




nepisat

リンク

2015/6/13(Sat) 20:36:55|NO.69776


#module #uselib "kernel32.dll" #cfunc CreateProcess "CreateProcessA" int,sptr,int,int,int,int,int,int,var,var #cfunc WaitForSingleObject "WaitForSingleObject" int,int #cfunc GetEnvironmentVariable "GetEnvironmentVariableA" var,var,int #cfunc CreatePipe "CreatePipe" var,var,var,int #cfunc CloseHandle "CloseHandle" int #cfunc PeekNamedPipe "PeekNamedPipe" int,int,int,int,int,int #cfunc ReadFile "ReadFile" int,var,int,var,int #define SW_HIDE 0 #define SW_SHOW 5 #deffunc consexec var prm1,str prm2 dosexcmd = prm2 : if strlen(dosexcmd)==0 : return -1 #define MAX_PATH 260 sdim cp,MAX_PATH+2 ev="Comspec" ret=GetEnvironmentVariable(ev,cp,MAX_PATH) if ret==0 : return -1 filename=cp+" /c "+dosexcmd #const MAX_BUF_SIZE 1024*1024 sdim szBuf,MAX_BUF_SIZE sa=12,0,1 : ret=CreatePipe(hRead,hWrite,sa,MAX_BUF_SIZE) ;***** 子プロセスを作成 ***** #define STARTF_USESHOWWINDOW 1 #define STARTF_USESTDHANDLES $00000100 dim lpsiStartInfo,17 ;STARTUPINFO構造体 dim lppiProcInfo,4 ;PROCESS_INFOMATION構造体 lpsiStartInfo(0) = 68 lpsiStartInfo(11) = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW lpsiStartInfo(12) = SW_HIDE lpsiStartInfo(15) = hWrite ret=CreateProcess(0,filename,0,0,1,0,0,0,lpsiStartInfo,lppiProcInfo) if ret==0 : end hprocess=lppiProcInfo(0) ret=WaitForSingleObject(hprocess,$ffffffff) ret=CloseHandle(hWrite) rcvbuf="" ;Buffer Size HSP側で自動確保 repeat await 10 ;***** 標準出力パイプの内容を調べる ***** ret=PeekNamedPipe(hRead,0,0,0,dwStdOut,0) ret=ReadFile(hRead,szBuf,4096,dwRead, 0) if dwRead<4096 : memcpy szBuf, szBuf, dwRead, 0, 0 : poke szBuf, dwRead : rcvbuf+=szBuf : break if dwRead==0 : break rcvbuf+=szBuf loop prm1=rcvbuf ret=CloseHandle(hRead) sdim szBuf,0 : sdim cp,0 : sdim rcvbuf,0 return 0 #global ;***** Sample ***** screen 0,640,480,0,ginfo_dispx-640>>1,ginfo_dispy-480>>1 buf="" cmd="dir" input cmd,580,20,500 button gosub "コマンド送信",*send stop *send consexec buf,cmd mesbox buf,ginfo(10)-4,ginfo(11)-24,5 objsel 0 : hCld=objinfo(0,2) objprm 2,buf input cmd,580,20,500 return
参考:http://hspnext.com/hspkura/hspkura02.htm#contents06



UMA

リンク

2015/6/13(Sat) 20:40:58|NO.69777

見ていてもあまり分からないので、どなたかサンプルいただけますか?



UMA

リンク

2015/6/13(Sat) 20:46:29|NO.69778

nepisatさん、ありがとうございました



UMA

リンク

2015/6/13(Sat) 20:54:35|NO.69779

みなさん、ありがとうございます



ONION software Copyright 1997-2023(c) All rights reserved.