focus.exe "firefox.exe" - как?
#1
Отправлено 09 августа 2010 - 17:28
Как сделать (написать) программу, которя могла бы фокусировать уже запушенную программу под windows? Т.е, грубо говоря мне нужно 'setFocus("firefox.exe");' или через cmd: 'focus.ехе -а "firefox.ехе"' Сказали что это делается в C++. Так вот, не подскажите, с чего начать? Где просше скомпилировать?
Заранее спасибо.
#2
Отправлено 09 августа 2010 - 19:44
SetForegroundWindow
Но судя по вопросам, боюсь тебе это не поможет, ищи на просторах тырнета готовый софт. Только всплывает еще один вопрос, что делать, если запущено несколько экземпляров лисы?
Самый адекватный вариант, запуск лисы с параметрами командной строки разрешающими только одну копию приложения, тогда повторный запуск выведит окно уже запущенного экземпляра на передний план. А вот обладает ли firefox подобной возможностью, это вопрос к гуглу.
#3
Отправлено 09 августа 2010 - 21:21
FindWindowEx
SetForegroundWindow
Но судя по вопросам, боюсь тебе это не поможет, ищи на просторах тырнета готовый софт. Только всплывает еще один вопрос, что делать, если запущено несколько экземпляров лисы?
Самый адекватный вариант, запуск лисы с параметрами командной строки разрешающими только одну копию приложения, тогда повторный запуск выведит окно уже запущенного экземпляра на передний план. А вот обладает ли firefox подобной возможностью, это вопрос к гуглу.
Спасибо за наводку. Но оно, к сожалению, мне ничё не даёт.
Во-первых, мне нужна эта прога не для лисы. Я сам пишу ActionScript3 на Eclipse и усердно юзаю Ant. Но есть беда: после сложных операций с муравьём, на переднем плане оказывается не то, что нужно. Вот, собсно хочу написать прогу, которую можно запускать через command prompt с одним параметром - названием инстанса проги.
Во-вторых, у меня нет никакого опыта с C++ или другими C. Поэтому, есть просьба разжевать всё это для чайников. Мне очень хорошо знаком Eclipse, поэтому я установил для него CDT.
Но вот, что делать дальше? Я чесно говоря - х.з. Ты не мог бы ткнуть меня в урок или другой ресурс, где можно почитать про то, что мне нужно?
Спасибо.
Ладно, качаю Visual Studio 2010, может там будет попонятнее. А то, в эклипсе ничего не удаёться забилдить.
#4
Отправлено 09 августа 2010 - 21:57
Гугли основы работы с Windows API на наиболее известном тебе языке.
#5
Отправлено 11 августа 2010 - 10:08
Кстати сделал это посредствам цикла всех процессов.
Примерно так.
using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; namespace FocusIt { class Program { static void Main(string[] args) { Process[] processes = Process.GetProcessesByName("firefox"); foreach (Process p in processes) { IntPtr handle = p.MainWindowHandle; SetForegroundWindow(handle); } } [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); } }
Осталось это портнуть в C++. Может кто знает/может чем помочь?
Спасибо.