2014-12-15 3 views
2

ShellExecute의 속성 동사를 사용하여 속성의 특정 탭을 여는 방법이 있습니까?ShellExecute 속성을 사용하는 특정 속성 탭 동사

전혀 할 방법이 있습니까? (ShellExecute 일 필요는 없지만 파일의 "속성 창"을 표시하는 내용을 많이 찾을 수는 없습니다)

(파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 자세히 탭을 클릭하는 동작을 모방)

+0

가능한 중복 [하나는 Windows 권한 프로그래밍 대화 상자를 호출 않습니다 어떻게?] (HTTP :/응용 프로그램이 유니 코드를 사용하는 경우, 당신은 예를 들어, 문자열에 L 앞에 추가해야한다는

주 /stackoverflow.com/questions/28035464/how-does-one-invoke-the-windows-permissions-dialog-programmatically) – wOxxOm

답변

1

해결책을 찾을 수있었습니다.

일부 코드입니다 :

// initalize COM 
HRESULT coInitRes = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); 

SHELLEXECUTEINFO ShExecInfo = {}; // initialize empty structure 
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); 
ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST; 
ShExecInfo.lpVerb = "properties"; 
ShExecInfo.lpFile = "C:\\Users"; 
ShExecInfo.lpParameters = "Security"; 
// ShExecInfo.lpParameters = "Tools"; // if you want to open another tab 
ShExecInfo.nShow = SW_SHOW; 
boolean result = ShellExecuteEx(&ShExecInfo); 
if (!result) { 
    int res = GetLastError(); // this retrieves the error code 
    // int res = (int) ShExecInfo.hInstApp; // this retrieves another error code 
          // on success, this value is 32 
} 

// close COM 
if (coInitRes == S_OK || coInitRes == S_FALSE) { // do not call when result is RPC_E_CHANGED_MODE 
    CoUninitialize(); 
} 

난 당신이 정말 호출 할 필요가 있는지 확실하지 않습니다 C#에 기록 된 다음 대답은 매우 도움이되었다 CoInitializeExCoUninitialize이지만, the docs of ShellExecuteEx은 우수 사례라고합니다.

이 예제에서는 속성 대화 상자의 보안 탭을 엽니 다. ShExecInfo.lpParameters의 값을 변경하여 다른 탭을 지정할 수 있습니다 (예 : Tools).

ShExecInfo.lpFile = L"C:\\Users";