Отправка сообщения ддругому процессу
От: monkmonah  
Дата: 21.07.08 08:02
Оценка:
Вот собственно получение всех процессов оконных приложений.

foreach (Process p in Process.GetProcesses(System.Environment.MachineName))
{
if (p.MainWindowHandle != IntPtr.Zero)
{
if (p.MainWindowTitle.Length > 0)
{
listView1.Items.Add(p.MainWindowTitle);
}
}
}

Как можно отправить процессу сообщение нажатия на пробел(или любую другую клавишу)?

21.07.08 12:34: Перенесено модератором из '.NET' — AndrewVK
Re: Отправка сообщения ддругому процессу
От: danclax  
Дата: 21.07.08 08:18
Оценка:
Здравствуйте, monkmonah, Вы писали:

M>Вот собственно получение всех процессов оконных приложений.


M>foreach (Process p in Process.GetProcesses(System.Environment.MachineName))

M>{
M> if (p.MainWindowHandle != IntPtr.Zero)
M> {
M> if (p.MainWindowTitle.Length > 0)
M> {
M> listView1.Items.Add(p.MainWindowTitle);
M> }
M> }
M>}

M>Как можно отправить процессу сообщение нажатия на пробел(или любую другую клавишу)?


SendMessage(hWnd, WM_KEYDOWN, ..., ...);
Re[2]: Отправка сообщения ддругому процессу
От: _FRED_ Черногория
Дата: 21.07.08 15:24
Оценка:
Здравствуйте, danclax, Вы писали:

M>>Как можно отправить процессу сообщение нажатия на пробел(или любую другую клавишу)?

D>SendMessage(hWnd, WM_KEYDOWN, ..., ...);

Я бы рекомендовал использовать PostMessage.
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Отправка сообщения ддругому процессу
От: danclax  
Дата: 21.07.08 19:20
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, danclax, Вы писали:


M>>>Как можно отправить процессу сообщение нажатия на пробел(или любую другую клавишу)?

D>>SendMessage(hWnd, WM_KEYDOWN, ..., ...);

_FR>Я бы рекомендовал использовать PostMessage.


Да точно, PostMessage лучше — без блокировки. Но я тут обратил внимание на раздел — .NET. А PostMessage/SendMessage — WinAPI. Навскидку способа в .NET не удалось найти.
Re[4]: Отправка сообщения ддругому процессу
От: _FRED_ Черногория
Дата: 22.07.08 09:11
Оценка:
Здравствуйте, danclax, Вы писали:

D>Да точно, PostMessage лучше — без блокировки. Но я тут обратил внимание на раздел — .NET. А PostMessage/SendMessage — WinAPI. Навскидку способа в .NET не удалось найти.


Вручную (подсмотрено в System.Windows.Forms):
[SuppressUnmanagedCodeSecurity]
internal static class UnsafeNativeMethods
{
  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, int lparam);

  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern IntPtr PostMessage(HandleRef hwnd, int msg, int wparam, IntPtr lparam);

  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern bool PostMessage(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam);

  [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
  public static extern void PostQuitMessage(int nExitCode);

  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern int PostThreadMessage(int id, int msg, IntPtr wparam, IntPtr lparam);
}
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.