Я нашел решение сам. Благодаря абазабам .
![alt text](https://lh3.ggpht.com/_FiDdjP4QWsI/TCewP2DgpmI/AAAAAAAAAI0/qMATuEKEo74/gtalk.jpg)
Если вы посмотрите на рисунок, есть панель с именем класса "# 32770" и заголовком окна "Диалог входа"
Когда пользователь не в сети, эта панель видна, а когда пользователь переходит в режим онлайн, панель не видна.
Таким образом, основная логика заключается в обнаружении видимости панели.
Вы можете использовать Spy ++, чтобы найти имя класса.
![alt text](https://lh6.ggpht.com/_FiDdjP4QWsI/TCewP6U3kfI/AAAAAAAAAIw/znBL9Vxxu0s/spy%2B%2B.jpg)
Декларация API:
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool IsWindowVisible(IntPtr hWnd);
Код:
IntPtr hwnd = IntPtr.Zero;
bool check;
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Google Talk - Google Xmpp Client GUI Window", "Google Talk");
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "Main View", "@main");
hwnd = FindWindowEx(hwnd, IntPtr.Zero, "#32770", "Sign In Dialogue");
check = IsWindowVisible(hwnd);
if (check == true)
{
MessageBox.Show("User is offline.");
}
else
{
MessageBox.Show("User is online.");
}
В любом случае, спасибо, что прочитали мою проблему.