2
ShellExecute의 속성 동사를 사용하여 속성의 특정 탭을 여는 방법이 있습니까?ShellExecute 속성을 사용하는 특정 속성 탭 동사
전혀 할 방법이 있습니까? (ShellExecute 일 필요는 없지만 파일의 "속성 창"을 표시하는 내용을 많이 찾을 수는 없습니다)
(파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 자세히 탭을 클릭하는 동작을 모방)
ShellExecute의 속성 동사를 사용하여 속성의 특정 탭을 여는 방법이 있습니까?ShellExecute 속성을 사용하는 특정 속성 탭 동사
전혀 할 방법이 있습니까? (ShellExecute 일 필요는 없지만 파일의 "속성 창"을 표시하는 내용을 많이 찾을 수는 없습니다)
(파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 자세히 탭을 클릭하는 동작을 모방)
해결책을 찾을 수있었습니다.
일부 코드입니다 :
// 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#에 기록 된 다음 대답은 매우 도움이되었다 CoInitializeEx
및 CoUninitialize
이지만, the docs of ShellExecuteEx은 우수 사례라고합니다.
이 예제에서는 속성 대화 상자의 보안 탭을 엽니 다. ShExecInfo.lpParameters
의 값을 변경하여 다른 탭을 지정할 수 있습니다 (예 : Tools
).
ShExecInfo.lpFile = L"C:\\Users";
의
가능한 중복 [하나는 Windows 권한 프로그래밍 대화 상자를 호출 않습니다 어떻게?] (HTTP :/응용 프로그램이 유니 코드를 사용하는 경우, 당신은 예를 들어, 문자열에
는L
앞에 추가해야한다는주 /stackoverflow.com/questions/28035464/how-does-one-invoke-the-windows-permissions-dialog-programmatically) – wOxxOm