2013-08-03 5 views
1

В основном, что я хочу сделать, это увидеть значение индикатора выполнения в приложении из другого приложения, если это возможно.Получить информацию из другого приложения

Я был в состоянии найти прогресс бар от моего приложения с и получить WindowInfo:

[DllImport("user32.dll")] 
private static extern bool GetWindowInfo(IntPtr hwnd, ref WINDOWINFO pwi); 

Но я не знаю, как или, если его можно получить значение.

WINDOWINFO пояснил here и here.

Любая помощь или другие идеи будут оценены.

+3

Используйте 'RangeValuePattern'. –

ответ

2

GetWindowInfo не собирается сообщать вам что-либо конкретное для индикатора выполнения - только стандартные флаги окна. Взгляните на документацию для Progress Bar Messages, чтобы узнать, как взаимодействовать с индикатором выполнения.

Вы должны использовать PBM_GETPOS сообщение, чтобы получить текущую позицию индикатора выполнения, как показано ниже:

const uint PBM_GETPOS = 0x0408; 
[DllImport("user32.dll")] 
private static extern IntPtr GetWindowInfo(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr lParam); 

uint pos = (uint)SendMessage(hwnd, PBM_GETPOS, IntPtr.Zero, IntPtr.Zero); 
+1

вы забыли добавить свое сообщение PGM_GETPOS к вызову SendMessage –

+0

Возможно, вы захотите использовать 'PBM_GETRANGE' слишком –

+0

Он конечно делает. Вот где это становится * сложно *, указатель lParam должен быть действительным в другом процессе. Этот ответ не поможет ему. Краткий комментарий Раймонда. –

Смежные вопросы