2013-01-09 6 views
0

B.exe에 동적 명령 줄 인수를 전달하여 다른 프로세스 B.exe를 부트 스트랩하는 A.exe 프로그램이 있습니다. 기본 Windows 7 작업 표시 줄 작업 목록은 B.exe의 다른 인스턴스를 맨 위 옵션으로 시작할 수있는 옵션을 제공합니다. 예 : http://cl.ly/image/2C1X2g1A2K0k 맨 위 옵션은 명령 창의 다른 인스턴스를 엽니 다.Windows 7 작업 표시 줄 "jump list"에서 기본 작업 표시 줄 작업 사용자 정의

Win32/Shell API를 통해이 기본 작업 목록을 사용자 지정하여 최상위 옵션이 B.exe 대신 A.exe를 실제로 열도록하는 것이 좋습니다. 이것이 가능한가? 이것은 응용 프로그램이 "고정 된"경우에도 적용됩니다. 고정 된 단추가 가리켜 야하고 A.exe를로드해야합니다. B.exe에는 A.exe에 의해 결정되는 동적 명령 줄 매개 변수가 필요하기 때문에 이것은 필수 사항입니다. B.exe는 A.exe에 대해 알지 못합니다.

이 기능을 사용할 수없는 다른 해결 방법 (예 : 셸 링크, 바로 가기 등)이 있습니까? 아니면 단순히 작업 목록을 모두 비활성화하는 방법이 있습니까? 사전에

감사합니다. 이 질문이 명확하지 않은 경우 알려 주시면 설명을 업데이트하겠습니다.

+0

고정을 위해 System.AppUserModel.RelaunchCommand 속성을 사용할 수 있습니다. 샘플 프로그램 [here] (http://blogs.msdn.com/b/oldnewthing/archive/2011/06/01/10170113.aspx) –

답변

0

이 문제에 대한 좋은 해결책은 STARTF_TITLEISLINKNAME 플래그 as explained on the MSDN page과 결합 된 바로 가기 (.lnk) 파일을 사용하는 것이 었습니다. Windows는 응용 프로그램이 작업 표시 줄에 고정되어있을 때뿐만 아니라 응용 프로그램의 새 인스턴스 (작업 목록의 맨 위 항목)를 시작하기위한 바로 가기를 작업 표시 줄 작업 항목으로 사용합니다. B.exe에 B.lnk 점을 가정 예를 들어

, 우리는 a.exe를 넣어 수 있습니다 비슷한 틈새 유스 케이스를 가진 사람을 도움이

PROCESS_INFORMATION piProcInfo; 
ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION)); 

STARTUPINFO siStartInfo; 
ZeroMemory(&siStartInfo, sizeof(STARTUPINFO)); 
siStartInfo.cb = sizeof(STARTUPINFO); 
siStartInfo.lpTitle = (LPTSTR)L"C:\Path\to\B.lnk"; 
siStartInfo.dwFlags = STARTF_TITLEISLINKNAME; 

CreateProcess(NULL, 
       (LPTSTR)L"C:\Path\to\B.exe", 
       NULL, 
       NULL, 
       TRUE, 
       CREATE_NO_WINDOW, 
       NULL, 
       NULL, 
       &siStartInfo, 
       &piProcInfo); 

희망을.