Clarion 8에서 cmd 창을 숨기는 방법이 있습니까?Clarion에서 cmd 창 숨기기
는 나는 다음과 같은 형태 있도록 필드에서 응용 프로그램을 정의 파일을 복사 할 XCOPY 실행
Run('Xcopy '&Clip(Loc:Pathfrom)&' '&loc:Pathto')
즉 Run(' C:\Temp\Temp.tps c:\Bakup\')
.
검은 색 창을 표시하지 않고 복사 만하는 cmd 또는 Clarion 명령이 있습니까?
Clarion 8에서 cmd 창을 숨기는 방법이 있습니까?Clarion에서 cmd 창 숨기기
는 나는 다음과 같은 형태 있도록 필드에서 응용 프로그램을 정의 파일을 복사 할 XCOPY 실행
Run('Xcopy '&Clip(Loc:Pathfrom)&' '&loc:Pathto')
즉 Run(' C:\Temp\Temp.tps c:\Bakup\')
.
검은 색 창을 표시하지 않고 복사 만하는 cmd 또는 Clarion 명령이 있습니까?
아니요. xcopy.exe
과 같은 콘솔 응용 프로그램에서 Clarion RUN()
기능을 사용하면 설명 된 옵션을 사용하여 명령 줄 인터페이스 창을 숨길 수 없습니다.
예 클라리온 프로그램 :
PROGRAM
MAP
END
pathFrom cstring('C:\Temp\Temp.tps') !You could use STRING instead of CSTRING, but then must use CLIP(pathFrom) below
pathTo cstring('c:\Backup\')
CODE
!You will see a black cmd.exe console window open to run ththe following CLI command
Run('xcopy ' & pathFrom & ' ' & pathTo, true) !second parameter of true means to wait for the program being "run" to complete.
그러나,이 문제를 해결하는 한 가지 방법은 일을하거나 단순히 숨겨진 명령 줄 인터페이스 콘솔 응용 프로그램을 실행하는이 아닌 콘솔 응용 프로그램을 사용하는 것입니다. 나는 AutoIT으로 후자를했다. Clarion이 Run()
기능을 제공하는 것처럼 AutoIT도 그렇지만 창을 숨길 수있는 추가 기능이 있습니다.
하는 AutoIt 스크립트 (runhidden.exe로 컴파일 runhidden.au3) :
위의 컴파일하는 AutoIt 스크립트를 사용하여Opt("TrayIconHide",1) ;This hides AutoIT's default systray icon from appearing
dim $command = $CmdLine[1] & ' ' & $CmdLine[2] & ' ' & $CmdLine[3] & ' ' & $CmdLine[4]
Run ($command,"",@SW_HIDE)
예 클라리온 프로그램 :
이PROGRAM
MAP
END
pathFrom cstring('C:\Temp\Temp.tps')
pathTo cstring('c:\Backup\')
CODE
!You won't see a black cmd.exe console window opened by the following CLI command:
Run('runhidden.exe xcopy '& pathFrom & ' ' & pathTo, true)
당신은 위의 대한 AutoIT 반입을 사용할 필요가 없습니다 기술이지만 AutoIT는 무료이며 사용하기 쉽습니다.
명령 줄 copy/xcopy 명령을 사용하는 것이 바람직한 이유가 아니라면 Clarion의 기본 제공 복사 기능을 사용하여 파일을 복사하지 않는 이유는 무엇입니까?
나는 당신이 복사하려는 폴더 아래의 모든 단일 파일 (그리고 아마도 폴더)을 찾아야하므로 내장 된 COPY 명령을 사용하고 싶지 않은 이유를 알고 있습니다. 내가 너라면, 적절한 도구를 사용하여 윈도우 API를 만들고 창을 숨길 것이다.
PROGRAM
SW_HIDE EQUATE(0)
SW_SHOW EQUATE(5)
MAP
MODULE('SHELL')
ShellExecute(hWnd,|
*CSTRING Operation,|
*CSTRING PathAndFileName,|
*CSTRING CommandLineParameters,|
*CSTRING DefaultDirectory,|
LONG ShowCommandCode),|
hInstance,|
PASCAL,RAW,NAME('ShellExecuteA')
END
END
LOC:OPN CSTRING(50)
LOC:NSTR CSTRING(100
LOC:CMD CSTRING(255)
LOC:DD CSTRING(255)
CODE
LOC:OPN = 'open'
LOC:NSTR = 'C:\Temp\Temp.tps c:\Bakup\'
LOC:DD = 'C:\Temp'
LOC:Cmd = 'XCOPY'
ShellExecute(0{PROP:Handle},LOC:OPN,LOC:CMD,LOC:NSTR,LOC:DD,SW_HIDE)
이 코드는 테스트되지 않았습니다.
CREATE_NO_WINDOW
플래그가있는 CreateProcess API 함수를 사용하는 것이 좋습니다.
장소 주변의 Clarion 코드에서 몇 가지 예를 찾을 수 있어야합니다. 좋은 출발점은 ClarionMagLibrary에서 발견 CML_System_IO_CaptureStdOutput.clw
의 CreateProcessCaptureOutput
방법 : 필요한 것을
https://github.com/devroadmaps/ClarionMagLibrary/tree/master/libsrc
비틀기?
이것은 정말로 논평이 아닌 대답입니다. 조금 더 많은 담당자와 함께 [주석을 게시 할 수 있습니다] (// stackoverflow.com/privileges/comment). – Makyen