# for all - Не особо мне нравиться этот способ, но другого пока не вижу. (http://www.realcoding.net/article/view/817)
| Код | void __fastcall TForm1::OpenRegEdit2(String KeyEdit) { HWND Regedit = FindWindow("RegEdit_RegEdit", NULL), Tree, List; if(Regedit == NULL) { SHELLEXECUTEINFO info; ZeroMemory(&info, sizeof(SHELLEXECUTEINFO)); info.cbSize = sizeof info; info.fMask = SEE_MASK_NOCLOSEPROCESS; info.lpVerb = "open"; info.lpFile = "Regedit.exe"; info.nShow = SW_SHOWNORMAL; ShellExecuteEx(&info); WaitForInputIdle(info.hProcess, INFINITE); Regedit = FindWindow("RegEdit_RegEdit", NULL); } // ---- if(Regedit == NULL) { MessageDlg("nНевозможно запустить Regedit.exe.", mtError, TMsgDlgButtons()<<mbOK, 0); return; } // ---- ShowWindow(Regedit, SW_MAXIMIZE); SetForegroundWindow(Regedit); Tree = FindWindowEx(Regedit, NULL, "SysTreeView32", NULL); PostMessage(Tree, WM_KEYDOWN, VK_HOME, 0); // ---- DEVMODE dm; EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm); if(dm.dmBitsPerPel > 8) Sleep(500); // ---- char *ch = KeyEdit.c_str(); for(; *ch; ++ch) { if(*ch == '\\') { PostMessage(Tree, WM_KEYDOWN, VK_RIGHT, 0); if(dm.dmBitsPerPel > 8) Sleep(250); } else PostMessage(Tree, WM_CHAR, toupper(*ch), 0); } }
|
|