2009-08-16 3 views
0

그래서 최근에 두 매개 변수가 모두 같으면 프로그램이 호출 된 방식을 결정하는 몇 가지 문제가 발생합니다. /어떤 것. 런타임에 프로그램과 아이콘을 연결하고 cmd를 사용하여 호출 할 수 있지만 연결된 파일 (아이콘 포함)에 doubleclikc가 생길 때마다 progam이 열리고 필요한 트리거가 필요하지 않기 때문에 rotine이 필요하지 않습니다. 매개 변수는 실행 ...> appname.exe/something/something이 아닌 doubleclick이 실행 된 경우 실행됩니다.델파이 : CMD에서 프로그램 실행 및 내부 프로 시저/함수 호출 또는 연결된 내선에서 Doubleclick 사용

당신은 내가 ParamStr을/ParamCount/blablabla/FindCMDLineSwitch/일부 다른 기능 ...하지만를 사용, 간단한 예제를 제공하거나 추측 할 수로 등 현재

requiered 기능을 이론적으로 모두 쓸 수 ... 여전히 ...

답변

5

:(당신은 당신이 경우 액션 # 1을 할 수 있기를 원하는 생각 조금?

를 설명 할 수 문서 "mydocument.ext"에 대한 아이콘과 행동에 사용하고 DoubleClick 그가 입력하는 경우 # 2

appname.exe mydocument.exe 

두 번 클릭하면 레지스트리에 연결된 "명령 문자열"이있는 "열린"동사가 실행됩니다. 가장 좋은 방법은 다음과 같은 명령 문자열을 설정하는 것입니다.

MyProgram.exe "%1" /doubleclicked 

... 런타임에/doubleclicked 플래그를 확인하십시오. 분명히 사용자가 "/ doubleclicked"옵션을 사용하여 명령을 입력하지 못하게 할 수는 없지만 그 방법은 쉘의 작동 방식입니다.

+0

예. exeatly 내가 필요한 것. 음 ... 젠장,하지만 thisbasic/dl 매개 변수가 결국 최상의 해결책이라고 생각합니다 ... –

+1

+1 엄청나게 궁금한 질문을 찾아내는 Roddy! – Argalatyr

+0

Argalatyr와 동의합니다. 이 질문은 Roddy의 대답을 읽을 때까지 아무 것도 이해하지 못했습니다. –

1

Roddy가 제안한 것처럼 매개 변수 스위치는 신뢰할 수있는 유일한 솔루션이라고 생각합니다. 그러나 사용자가 자신의 바로 가기를 만들면 사용자의 요구에 맞지 않을 수 있습니다.

즉 사용자가 명령 줄에 일부 "문서"가 포함 된 바로 가기를 만드는 경우 명령 줄 호출 또는 "두 번 클릭"으로 취급되기를 원하십니까? 내 생각 엔 후자 야.

전자의 경우 여기에서 읽을 수 있습니다. :)

그러나 다음 후자 경우 당신은

는 명령 줄을 사용하여 포함 할 그건 .... 안정적으로 원하는 동작을 얻을 수 (이상)에 조금 더 많은 작업을 넣어해야합니다 두 번 누르기보다는 명령 줄 실행을 나타내려면 스위치를 두 번 누르는 것이 효과적이지만 한 가지 방법은 명령 줄에서 실행하는 것입니다. 즉, 명령 줄을 사용하십시오! (나는 Start Menu -> Run ...을 명령 줄 실행으로 간주한다.) ymmv)

그렇다면 나는 응용 프로그램에 대한 명령 행 특정 실행 프로그램을 만들 것이다. 명령 행 시작 프로그램은 실제로 실행 파일을 호출하기 전에 명령 줄을 사용하고 추가 매개 변수를 추가하는 매우 간단한 코드입니다.

예 :

myapp와의 PARAM1의 PARAM2 단순히 효율적으로에서 ShellExecute를 호출

:

myappgui PARAM1 PARAM2 /cmd를

나 자신이 두 개의 실행 파일을 가지고 너무 걱정되지 않을 것 사용자가 호출 할 때 실제 "app"을 나타내는 exe의 실제 이름에 훨씬 덜 관심이 있기 때문에 GUI를 통해 GUI를 호출하는 것은 이름을 알거나 알 필요가 없기 때문에 가능합니다. 귀하의 파일 형식 연결 및 바로 가기 등을 직접 단순히 모든 지점 myappgui.exe보다는 을 "진짜"MyApp.exe의

그리고 당신의 명령 줄 참조는 단순히 MyApp.exe의를 사용하는 사용자 지시 명령 줄에서 앱을 호출 할 수 있습니다.

응용 프로그램에서 명령 줄 스위치를 찾으면 명령 줄 실행기 응용 프로그램을 통해 실행되었음을 알게됩니다. 그렇지 않으면 두 번 클릭/GUI를 실행해야합니다.

대부분의 사용자가 염려하는 한, 두 개의 exe가 관련되어 있다는 것을 알 필요조차 없습니다. 어떤 경우 든 사용자가 원하는 기술을 발견하면 사용자가 원하는 기술을 발견 할 때 명령 줄을 만들어 원하는 결과를 얻으려고 스푸핑 할 수 있습니다.

이것이 중요한 경우 명령 줄 실행기 방식을 사용하면 메커니즘을 발견 할 가능성이 낮아질 수 있습니다. 두 개의 실행 파일만으로 충분하지 않다는 것을 알면 명령 줄 스위치도 알아야합니다. 커맨드 라인 발사기가 추가되었습니다. - 명령 행 시작 프로그램 myapp.exe을 사용하지 않고 명령 행에서 직접 myappgui.exe을 사용한 경우, GUI에서 실행 된 것처럼 계속 응답합니다!

한편, GUI 시작을 나타내는 스위치를 사용하면 스위치가 "public view"에 필요한 스위치를 넣어야합니다.

+0

http://en.wiktionary.org/wiki/TLDR – Argalatyr

관련 문제