2014-09-15 12 views
1

Clarion 8에서 cmd 창을 숨기는 방법이 있습니까?Clarion에서 cmd 창 숨기기

는 나는 다음과 같은 형태 있도록 필드에서 응용 프로그램을 정의 파일을 복사 할 XCOPY 실행

Run('Xcopy '&Clip(Loc:Pathfrom)&' '&loc:Pathto') 

Run(' C:\Temp\Temp.tps c:\Bakup\').

검은 색 창을 표시하지 않고 복사 만하는 cmd 또는 Clarion 명령이 있습니까?

답변

0

아니요. 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는 무료이며 사용하기 쉽습니다.

0

명령 줄 copy/xcopy 명령을 사용하는 것이 바람직한 이유가 아니라면 Clarion의 기본 제공 복사 기능을 사용하여 파일을 복사하지 않는 이유는 무엇입니까?

+0

이것은 정말로 논평이 아닌 대답입니다. 조금 더 많은 담당자와 함께 [주석을 게시 할 수 있습니다] (// stackoverflow.com/privileges/comment). – Makyen

0

나는 당신이 복사하려는 폴더 아래의 모든 단일 파일 (그리고 아마도 폴더)을 찾아야하므로 내장 된 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) 

이 코드는 테스트되지 않았습니다.