Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.
Работа с переменными в других процессах
A: (SUnteXx)
Оригинальная ссылка: нету

Ниже приведеный код работает тока на линейке NT: NT, 2000, XP и т.д.

Приведенный ниже пример показывает, как можно получить название всех кнопок Таскбара. Для этого нам необходимо "внедриться" в чужой процесс, создав там строку и считав туда названия, а потом уже получить переменную из того процесса!
#include <stdio.h>
 
 #include <conio.h>
 
 #include <windows.h>
 
 #include <commctrl.h>
 
 
 
 void GetButtonText(HWND hwndTaskbar, int iNum, char *szText, UINT iMax)
 
 {
 
     DWORD d;
 
     char **lp;
 
 
 
     if (!hwndTaskbar)
 
     {
 
         hwndTaskbar = FindWindow("Shell_TrayWnd", NULL); // Панелька внизу
 
         hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "ReBarWindow32", NULL); // Панель левее кнопки пуск
 
         hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "MSTaskSwWClass", NULL); // Панель, там где минимизированные окна и т.п.
 
         hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "ToolbarWindow32", NULL); // хм... таскбар
 
     }
 
 
 
 // получаем ID процесса таскбара
 
     GetWindowThreadProcessId(hwndTaskbar, &d);
 
 
 
 // открываем процесс на запись/чтение
 
     HANDLE h = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, 0, d);
 
 
 
 // создаем переменную в другом процессе    
 
     lp = (LPSTR*)VirtualAllocEx(h, NULL, iMax, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
 
 
 
 // очищаем нашу строку, куда будем считывать текст окна из таскбара
 
     memset(szText, 0, iMax);
 
 
 
 // пишем пустую строку в процесс.
 
 // Этого, в данном случае можно не делать. Просто показал как это делается
 
     WriteProcessMemory(h, (LPVOID)lp, szText, iMax, NULL);
 
 
 
 // получаем название кнопки в выделенную в другом процессе строку
 
     SendMessage(hwndTaskbar, TB_GETBUTTONTEXT, iNum, (LPARAM)lp);
 
 
 
 // читаем значение строки из другого процесса в наш
 
     ReadProcessMemory(h, (LPVOID)lp, szText, iMax, 0l);
 
 
 
 // удаляем переменную в другом процессе
 
     VirtualFreeEx(h, lp, 0, MEM_RELEASE);
 
 
 
 // заканчиваем работу с другим процессом
 
     CloseHandle(h);
 
 }
 
 
 
 void main(void)
 
 {
 
     char szText[200];
 
     HWND hwndTaskbar;
 
     
 
 // ищем окно Таскбара    
 
     hwndTaskbar = FindWindow("Shell_TrayWnd", NULL); // Панелька внизу
 
     hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "ReBarWindow32", NULL); // Панель левее кнопки пуск
 
     hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "MSTaskSwWClass", NULL); // Панель, там где минимизированные окна и т.п.
 
     hwndTaskbar = FindWindowEx(hwndTaskbar, NULL, "ToolbarWindow32", NULL); // хм... таскбар
 
 
 
 // получаем количество кнопок в таскбаре    
 
     int max = SendMessage(hwndTaskbar, TB_BUTTONCOUNT, 0, 0);
 
 
 
     for (int i = 0; i <= max; i++)
 
     {
 
 // если данная кнопка под номером i не видна (скрыта), то
 
         if (SendMessage(hwndTaskbar, TB_ISBUTTONHIDDEN, i, 0))
 
             continue; // переходим к следующей кнопку
 
 
 
 // получаем текст кнопки №i в таскбаре
 
         GetButtonText(hwndTaskbar, i, szText, 200);
 
         printf("%s\r\n", szText); // выводим название
 
     }
 
     
 
     printf("\r\nPress any key to continue"); // просим юзверя нажать "any key" на клавиатуре
 
 
 
     while(!_getch()); // ждем нажатия кнопки
 
 
 
     return; // выходим
 
 }



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS