· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Процесс.

Посл.отвђт Сообщен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