|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 28, 2003 12:12:17 Здравствуйте! Я запускаю программу CreateProcess и хочу получить handle окна, чтобы после запуска сразу послать сообщения, типа ShowWindow, hWnd, SW_HIDE? Как, зная имя процесса, получить его handle и затем послать ему сообщение | что либо сотворить с процессом? И ещё, вопрос столетия ;) Можно ли под Windows 2000/XP запустить программу с привилегиями другого пользователя? Подскажите, пожалуйста, как это реализовать! (К последнему вопросу, если есть ответ, хорошо бы получить исходники ;) Приношу извинения за простые вопросы. |
|
|
Дата: Ноя 28, 2003 15:15:22 По поводу первого вопроса копай NtQuerySystemInformation, Process32First,Process32Next По поводу второго CreateProcessAsUser |
|
|
Дата: Ноя 28, 2003 17:39:15 Может быть есть конкретные примеры? Ещё: как сменить приоритет у процесса, зная только его имя? Как послать сообщение окну, зная только имя процесса? Заранее спасибо! |
|
|
Дата: Ноя 28, 2003 18:00:05 а ты случайно msdn читать не пробовал? как сменить приоритет у процесса, зная только его имя? Вырываешь PID из PROCESSENTRY32 или SYSTEM_PROCESS_INFORMATION, делаешь OpenProcess и SetPriorityClass Как послать сообщение окну, зная только имя процесса аналогично |
|
|
Дата: Ноя 28, 2003 19:15:50 hello_world Спасибо! Но MSDN у меня нет! А код очень срочно нужон ;) |
|
|
Дата: Ноя 28, 2003 19:24:43 msdn.microsoft.com |
|
|
Дата: Ноя 28, 2003 19:35:23 hello_world Правильно пинаешь. |
|
|
Дата: Ноя 28, 2003 19:44:08 volodya Правильно пинаешь. Спасибо :) Но до тебя мне еще далеко :))) |
|
|
Дата: Ноя 28, 2003 21:23:47 Извините, не пинайте сильно, пожалуйста! Помогите мне - правильная ли структура для startinfo STARTUPINFO <NULL,NULL,?,STARTF_USESHOWWINDOW or STARTF_USEPOSITION or STARTF_USESIZE or STARTF_USECOUNTCHARS or STARTF_USEFILLATTRIBUTE or STARTF_USESTDHANDLES, SW_MINIMIZE, NULL, NULL>- что бы запустить программу в минимизированном виде? |
|
|
Дата: Ноя 28, 2003 21:56:40 · Поправил: hello_world Помогите мне - правильная ли структура Можно узнать чего ты добиваешься этим вопросом? Ты не поверишь, но самый лучший способ узнать, правильная она или нет - это ПРОВЕРИТЬ ее. Или ты хочешь чтобы я ее проверил? И еще, почему у меня ушло ~ 2 минуты чтобы найти это ??? http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secur ity/security/starting_an_interactive_client_process.asp |
|
|
Дата: Ноя 28, 2003 23:46:03 hello_world Не так резко ;) Я просто никогда раньше не видел, как создать структуру. А на СИ++ хелп у меня есть, но въехать я не могу, извини. А МСДН - конечно я там стараюсь находить инфу (на сайте), но понять, как написать структуру - на асм не знаю. |
|
|
Дата: Ноя 29, 2003 00:23:08 Во-первых, ты ее пишешь не на асме. Чтобы там кто ни говорил, это HLL. А как создать СТРУКТУРУ на АССЕМБЛЕРЕ - пишет Рендалл Хайд. Книга лежит на сайте. Глава 5. "Variables and Data Structures". Смысл прост. На стадии ассемблирования ассемблер должен знать адрес начала структуры. К членам структуры доступаются путем прибавления нужного количества байт к адресу начала. А что до MSDN - узнавай расположение и размер параметров. Потом переписывай на асме. Это не слишком сложно. К примеру, твоя структура выглядит так:
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
На асме мы должны поменять лексику так, чтобы MASM понял, что это структура. Значит, это будет нечто вроде: startupinfo struct cb DWORD ? ... startupinfo ends и так далее... к слову, у тебя упомянуты только 7 параметров, а в структуре их гораздо больше. И вообще, иди в пакет MASM32 и выкапывай эту структуру оттуда. А проверку на валидность надо осуществлять самому - сначала ассемблером, потом отладчиком. |
|
|
Дата: Ноя 29, 2003 00:33:18 1990 Я просто никогда раньше не видел, как создать структуру Ну так бы и сказал. Для начала почитай \masm32\HELP\MASM32.HLP - там описаны все макросредства masm'a и структуры в том числе. Прочитай Iczelion'a, всегда держи под рукой msdn. Здесь есть куча интересных исходников: http://www.win32asm.cjb.net/ http://www.wasm.ru/srclist.php Если чего-то не понимаешь, найди похожий исходник и разберись с ним. Еще один очень полезный документ: http://www.bugtraq.ru/forum/faq/general/smart-questions.html Удачи :) |
|
|
Дата: Ноя 29, 2003 02:26:21 · Поправил: Four-F [ 1990: Помогите мне - правильная ли структура чтобы запустить программу в минимизированном виде? ] Всё несколько проще. .386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
.data
szNotepad db "\Notepad.exe", 0
StartupInfo STARTUPINFO <0,0,0,0,0,0,0,0,0,0,0,STARTF_USESHOWWINDOW,SW_MINIMIZE>
ProcessInfo PROCESS_INFORMATION <0>
buffer db MAX_PATH dup(0)
.code
start:
invoke GetSystemDirectory, addr buffer, sizeof buffer
invoke lstrcat, addr buffer, addr szNotepad
mov StartupInfo.cb, sizeof STARTUPINFO
invoke CreateProcess, addr buffer, NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, \
NULL,NULL, addr StartupInfo, addr ProcessInfo
ret
end start |
|
|
Дата: Ноя 29, 2003 09:46:15 hello_world volodya Four-F, спасибо! Обязательно учту ВСЁ что вы мне сказали и постараюсь прочесть эти книги. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.143 |