Как получить все ручки процесса?
Я создал новое окно Chrome с веб-сайтом Google Translate, я хочу, чтобы окно выглядело не максимизированным для пользователя, чтобы ввести текст и выйти из нового окна. Также как сделать новое окно в одиночку немаксимизированным.
Что я уже пробовал:
private void button1_Click(object sender, EventArgs e) { var prs = new ProcessStartInfo("chrome.exe"); prs.Arguments = "http://translate.google.com" + " --new-window"; Process p = Process.Start(prs); Program.setFocusToProcess(p); //setFocusToThisProcessChromeName("chrome"); } public static void setFocusToThisProcessChromeName(string name) { Process[] Processes = Process.GetProcessesByName(name); //if (Processes.Length == 0) //{ // MessageBox.Show("The program: '" + name + "' isn't running and can't be focused on.", "TranslateProgram"); // return; //} foreach (Process process in Processes) { setFocusToProcess(process); } } static public void setFocusToProcess(Process process) { //if (process.MainWindowHandle == (IntPtr)0x00000000) setFocusToHandleAndUnmaximize(process.MainWindowHandle); setFocusToHandleAndUnmaximize(process.Handle); } private static void setFocusToHandleAndUnmaximize(IntPtr i) { if (i == IntPtr.Zero) { return; } int SWP_SHOWWINDOW = 0x0040; const int SW_RESTORE = 9; int HWND_TOPMOST = -1; //const int SW_SHOWNORMAL = 1; //if (IsIconic(process.MainWindowHandle) != 0) //{ // ShowWindow(process.MainWindowHandle, SW_RESTORE); //} ShowWindow(i, SW_RESTORE); SetForegroundWindow(i); BringWindowToTop(i); SetFocus(new HandleRef(null, i)); SetWindowPos(i, 0, Cursor.Position.X - 100, Cursor.Position.Y - 100, 0, 0, SWP_SHOWWINDOW | HWND_TOPMOST| SW_RESTORE); } [DllImport("User32.dll")] static extern int SetForegroundWindow(IntPtr point); [DllImport("user32.dll")] private static extern int IsIconic(IntPtr hWnd); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr SetFocus(HandleRef hWnd); [DllImport("user32.dll")] private static extern int ShowWindow(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] private static extern int BringWindowToTop(IntPtr hWnd); [DllImport("user32.dll", EntryPoint = "SetWindowPos")] public static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
Dave Kreskowiak
Зачем вам нужны ручки всех процессов?
Кроме того, как вы собираетесь выяснить, что именно chrome.exe процесс - это тот, кому вы можете отправить сообщение? Просто запуск Chrome запускает девять процессов.
john1990_1
Я открываю новое окно Chrome, Как видно из моего кода, я хочу, чтобы только это окно было выведено вперед, и только это окно было размаксимизировано и приближено к положению мыши, чтобы пользователь мог печатать на нем. Как отличить процессы только что открытого окна и сделать его немаксимизированным? (и не все хромированные окна)
Dave Kreskowiak
Вы искали недвижимость Стильокна на изменение панели объект, который вы создали? Установите его в нормальное состояние перед запуском процесса.
john1990_1
Спасибо, извини, я пытался, это должно было сработать, но не сработало!
mehr.ah
Подумайте о лучших сценариях : вы можете использовать google translator для получения результатов базы запросов. вам нужно отправлять запросы по url-адресу и извлекать их из url-адреса . в этом случае вы можете сделать это с помощью ajax на главной странице или открыть новую страницу и делать то, что хотите.
john1990_1
Это сайт моей программы, я скоро загружу новую версию.
http://sites.google.com/site/windowsprogramfortranslation/
Я не хочу, чтобы HTTP - запрос и отправка фразы были переведены, я хочу полный браузер Google Translate...
Dave Kreskowiak
Хорошо, тогда сделайте это трудным способом и так, чтобы это имело наименьший смысл с наименьшим количеством контроля над пользовательским интерфейсом.
Получайте Удовольствие!
john1990_1
Я почти закончил его, мне просто нужен способ демаксимизации окна другой программы из Winforms.
john1990_1
Я встроил Chromium в свое приложение WinForms, но оно не было стабильным и постоянно становилось меньше окна при прокрутке и даже когда иногда не прокручивалось...