Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Offset на строковую константу [D7, ME]


Страницы:   1 2 3 4 5

Ллирик ©   (2010-10-22 00:57:00) 

У меня не хочет компилироваться такой код:
const
Keymouse = 'Keymouse.sys';
............
asm
.......
push offset   Keymouse
..........
end;
Будьте добры, подскажите, что мне сделать.


Ega23   (2010-12-03 08:34:00) [41]

У школоты предсессионное обострение.


Германн   (2010-12-03 02:06:00) [42]


> Ллирик ©   (24.10.10 16:45) [37]
>
>
> > Германн ©   (24.10.10 04:01) [34]
> >
> >
> > > пишу их на асме, и представьте себе они работают

Дети Кулибиных (с) ИШ


RWolf   (2010-12-03 01:09:00) [43]

пардон, невнимательно скопипейстил:
function StartService(hService: THandle; dwNumServiceArgs: DWORD;
ppServiceArgVectors: PChar): BOOL; stdcall; external advapi32 name 'StartServiceA';


RWolf   (2010-12-03 01:07:00) [44]


> Ллирик ©   (03.12.10 00:19) [49]

Ничто не мешает переобъявить StartService самому:
function StartService(hService: THandle; dwNumServiceArgs: DWORD;
 var lpServiceArgVectors: PChar): BOOL; stdcall; external advapi32 name 'StartServiceA';

и никто никого никуда не пошлёт.


sniknik   (2010-12-03 01:05:00) [45]

> Если lpServiceArgVectors NULL, этот параметр может быть нулём.
не может, т.к. в модуле в дельфи там вместо указателя на указатель объявили var параметр. что в принципе одно и тоже но компилятор нуля не пропустит.

ну, а тут такой "огород" из-за этого, вместо того чтобы указать переменную, что пожалеешь о строгой типизации дельфи... (вообще то она благо)


sniknik   (2010-12-03 00:59:00) [46]

> во втором и в третьем параметре!
во втором легко... в третьем тоже без проблем, делов свой описатель для функции "нарисовать".
но зачем? почему нужно коверкать стандартное, и передавать не пойми что, в функцию ожидающую другое. мы ж в отличие от тебя справку читаем. и понимаем, что делаем (в основном ;).


Inovet   (2010-12-03 00:57:00) [47]

> [29] Ллирик ©   (24.10.10 01:11)
> а я английского не знаю)

> [50] Inovet ©   (03.12.10 00:51)
> dwNumServiceArgs [in]
> The number of strings in the lpServiceArgVectors array.
> If lpServiceArgVectors is NULL, this parameter can be zero.

Я тоже не знаю, но несколько знакомых слов вижу. Примерно так будет
dwNumServiceArgs [in]
The number of strings in the lpServiceArgVectors array. If lpServiceArgVectors is NULL, this parameter can be zero.
Количество строк в массиве lpServiceArgVectors. Если lpServiceArgVectors NULL, этот параметр может быть нулём.


Inovet   (2010-12-03 00:51:00) [48]

> [49] Ллирик ©   (03.12.10 00:19)
> А Вы попробуйте скомпилировать StartService с нулём во втором
> и в третьем параметре!

Это что ли?
dwNumServiceArgs [in]
The number of strings in the lpServiceArgVectors array. If lpServiceArgVectors is NULL, this parameter can be zero.


Ллирик   (2010-12-03 00:19:00) [49]

А Вы попробуйте скомпилировать StartService с нулём во втором и в третьем параметре! Да Делфи Вас пошлёт куда по дальше!


sniknik   (2010-12-02 21:17:00) [50]

ассемблер тут так же к месту как член на лбу...


Игорь Шевченко   (2010-12-02 21:11:00) [51]

Ллирик ©   (02.12.10 20:30) [45]

А, если конечно, не секрет, для чего тут ассемблер ?


Сергей М.   (2010-12-02 20:51:00) [52]

Весело..
Полтора месяца кулхацкер изобретал трехколесный asm-велосипед с VCL-педалями


Ллирик   (2010-12-02 20:30:00) [53]

Вот:
program Mkkm;

uses
 Windows, WinSvc, Forms,
 Mkkm1 in 'Mkkm1.pas' {Form1};

{$R *.res}
const
 Keymouse: pansichar = 'Keymouse.sys';
 ccaption: pansichar = 'MouseKey and KeyRemapper';

var
 KeyHandle: HKEY;
 Res: LongInt;
 aTargetFullName: array[0..MAX_PATH] of Char;
begin
hSCManager := OpenSCManager(nil, niL, SC_MANAGER_CREATE_SERVICE);
if hSCManager = 0 then
begin
MessageBox(0, 'Can`t connect to Service Control Manager.', ccaption, MB_ICONSTOP);
exit;
end
else
begin
asm
push 0
push offset aTargetFullName
push 104h
push [Keymouse]
call GetFullPathName
end;
hService:= CreateService(hSCManager, 'Keymouse', ccaption,
                SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,
                SERVICE_ERROR_IGNORE, @aTargetFullName,  NiL, NiL, NiL, NiL, NiL);
if hService <> 0 then
begin
asm
push 0
push 0
push hService
call StartService
mov cb, eax
end;
if cb = 0 then
begin
res := GetLastError();
if Res <> ERROR_SERVICE_ALREADY_RUNNING then
begin
DeleteService(hService);
cCloseServiceHandle();
MessageBox(0, 'Error: can`t find the Keymouse.sys in folder', ccaption, MB_ICONSTOP);
exit;
end;
end;
cCloseServiceHandle();
end
else
begin
res := GetLastError();
if Res <> ERROR_SERVICE_EXISTS then
begin
cCloseServiceHandle();
DelServis();
MessageBox(0, 'Can`t create service', ccaption, MB_ICONSTOP);
exit;
end;
end;
begin
hDevi := CreateFile('\\\\.\\Keymouse', GENERIC_READ + GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if hDevi = INVALID_HANDLE_VALUE then
begin
MessageBox(0, 'The device is used by other application', ccaption, MB_ICONSTOP);
exit;
end;
 Res := RegOpenKeyEx(hKey_Current_User,'Software\Mkkm', 0, KEY_QUERY_VALUE, KeyHandle);
if Res = ERROR_SUCCESS then
begin
cb :=1;
RegQueryValueEx(KeyHandle, 'language', nil, nil, @language1, @cb);
RegCloseKey(KeyHandle);
end;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end;
end;

end.

но изменения ещё будут. А долго не показывал его потому, что занимался другим проектом.


Ллирик   (2010-10-24 23:37:00) [54]

Код пока не доделан, но драйвер уже запускается,как доделаю выложу


Andy BitOff   (2010-10-24 20:34:00) [55]

Кокажи код, который ты сделал, я уверен, что ты узнаешь много нового и интересного для лучшего изучения.


Ллирик   (2010-10-24 19:23:00) [56]

Да я  уже вчера сказал, что сделал то, что мне надо было


Anatoly Podgoretsky   (2010-10-24 18:19:00) [57]

> Ллирик  (24.10.2010 18:06:40)  [40]

Если ты будешь так изучать, как до это, то возможно к пенсии дойдешь до
понимания строк, а там глядищь и динамических массивов.


Ллирик   (2010-10-24 18:06:00) [58]


> Юрий Зотов ©   (24.10.10 16:56) [39]
>
> Пишите драйвера, зачем Вам тратить время на Delphi? За драйвера,
>  кстати, и платят больше. А уж если потребуется сделать
> визуальный интерфейс, то наймите программиста Delphi - часть
> денег отдадите ему, да и Вам еще останется. И скорость разработки,
>  кстати, будет выше.

не) Лучше я сам всё изучу и буду  сам себе хозяин) и будет - что хочу, то и ворочу))


Юрий Зотов   (2010-10-24 16:56:00) [59]

Пишите драйвера, зачем Вам тратить время на Delphi? За драйвера, кстати, и платят больше. А уж если потребуется сделать визуальный интерфейс, то наймите программиста Delphi - часть денег отдадите ему, да и Вам еще останется. И скорость разработки, кстати, будет выше.


Игорь Шевченко   (2010-10-24 16:52:00) [60]


> Никиты Кулькина


эт кто ?


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо