Функция 2 - получить код нажатой клавиши.
Существует ли описание кодов клавиш?... скажем в виде простой таблицы или чего-то подобного .
Вопрос
[quote="ALEXS1983"]Функция 2 - получить код нажатой клавиши.
Существует ли описание кодов клавиш?... скажем в виде простой таблицы или чего-то подобного .[/quote]
Не находил, я использую программу SCANCODE, которая есть в дистрибутиве.
Существует ли описание кодов клавиш?... скажем в виде простой таблицы или чего-то подобного .[/quote]
Не находил, я использую программу SCANCODE, которая есть в дистрибутиве.
[quote="pavelyakov"]Не находил, я использую программу SCANCODE, которая есть в дистрибутиве.[/quote]
да про SCANCODE я знаю. Не очень-то удобна для реализации того что я хочу. :-)
да про SCANCODE я знаю. Не очень-то удобна для реализации того что я хочу. :-)
А что именно хотите?
[quote="punk_joker"]А что именно хотите?[/quote]
Хочу создать модуль DLL который эмулирует сис.функции КОС. В частности хочу реализовать Функция 2 - получить код нажатой клавиши
Об этом если хочешь, можешь почитать здесь:
http://kolibriosandfasm.mybb.ru/viewtopic.php?id=13
Если влом читать всё, то читай со слов: "Так родилась идея создания DLL-модуля, который будет выполнять роль визуализатора результатов. "
Хочу создать модуль DLL который эмулирует сис.функции КОС. В частности хочу реализовать Функция 2 - получить код нажатой клавиши
Об этом если хочешь, можешь почитать здесь:
http://kolibriosandfasm.mybb.ru/viewtopic.php?id=13
Если влом читать всё, то читай со слов: "Так родилась идея создания DLL-модуля, который будет выполнять роль визуализатора результатов. "
"Как можно предсказать всевозможные вопросы, которые могут возникнуть у кого-то?"
Иногда можно (в идеале), или почти все, в этом и заключается талант учителя. Знаешь, когда детям говорят, что чего-то нельзя, но не объясняют почему, то их это не особо вразумляет. Хотя, твои уроки больше напоминают блог.
"Дельфи очень хорошая среда для программирования по сравнению Fasm"
Fasm это вообще не среда программирования.
Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. Таблицы есть на википедии.
Иногда можно (в идеале), или почти все, в этом и заключается талант учителя. Знаешь, когда детям говорят, что чего-то нельзя, но не объясняют почему, то их это не особо вразумляет. Хотя, твои уроки больше напоминают блог.
"Дельфи очень хорошая среда для программирования по сравнению Fasm"
Fasm это вообще не среда программирования.
Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. Таблицы есть на википедии.
[quote="Pathoswithin"]
Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. .[/quote]
Скан коды не зависят от раскладки, это ASCII коды от нее зависят
Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. .[/quote]
Скан коды не зависят от раскладки, это ASCII коды от нее зависят
Ну я это и написал.
[b]ALEXS1983[/b],
Забавная идея, по поводу Virus Total и Delphi 7 приложений, была такая мразота - W32/Induc.A, которая внедряла свой код в системные dcu Delphi <= 7 версии.
Забавная идея, по поводу Virus Total и Delphi 7 приложений, была такая мразота - W32/Induc.A, которая внедряла свой код в системные dcu Delphi <= 7 версии.
ALEXS1983, может ты на youtube видеоуроки позаписываешь?
[quote="pavelyakov"]ALEXS1983, может ты на youtube видеоуроки позаписываешь?[/quote]
Шутишь однако :-)
Шутишь однако :-)
В асм вставках дельфи есть такая команда как "ret $000c", при переносе процедуры в Fasm, там команда не работает, а обычной "ret" не отделаешься.
Что эта команда "ret $000c" значит? и как быть ? Чем её заменить или как её обойти ?
Похоже что она очень по существу, так как процедура в асм-вставках дельфи работает нормально только при ней, а не при Ret
Что эта команда "ret $000c" значит? и как быть ? Чем её заменить или как её обойти ?
Похоже что она очень по существу, так как процедура в асм-вставках дельфи работает нормально только при ней, а не при Ret
Скорее всего там при возвращении сдвигается указатель стека (регистр esp)
Так как число c(16) = 12(10) то попробуй написать:
ret 12
может и заработает
Так как число c(16) = 12(10) то попробуй написать:
ret 12
может и заработает
[quote="IgorA"]Скорее всего там при возвращении сдвигается указатель стека (регистр esp)
Так как число c(16) = 12(10) то попробуй написать:
ret 12
может и заработает[/quote]
Заработать то не заработало, так как надо, но БОЛЬШОЕ СПАСИБО, видимо так оно и есть (насчёт сдвига) стека. Так как меня очень удивило что в скомпилированной процедуре 7 "пуш" и 6 "поп" и она нормально работает в асм-вставках дельфи
Procedure DrawXLineA1;
Begin
asm
@START: {передача параметров через стек и регистры}
push $00ff34ff
push $05
push $01
mov ecx,$0000000a
mov edx,$0000000a
mov eax,$0000000a
call @DrawXLineA
ret
@DrawXLineA: {сама процедура}
push ebp
mov ebp,esp
add esp,-$08
push ebx
push esi
push edi
.....
..........
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret $000c
end;
end;
Так как число c(16) = 12(10) то попробуй написать:
ret 12
может и заработает[/quote]
Заработать то не заработало, так как надо, но БОЛЬШОЕ СПАСИБО, видимо так оно и есть (насчёт сдвига) стека. Так как меня очень удивило что в скомпилированной процедуре 7 "пуш" и 6 "поп" и она нормально работает в асм-вставках дельфи
Procedure DrawXLineA1;
Begin
asm
@START: {передача параметров через стек и регистры}
push $00ff34ff
push $05
push $01
mov ecx,$0000000a
mov edx,$0000000a
mov eax,$0000000a
call @DrawXLineA
ret
@DrawXLineA: {сама процедура}
push ebp
mov ebp,esp
add esp,-$08
push ebx
push esi
push edi
.....
..........
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
ret $000c
end;
end;
Пример вызова ф-ции си в асме.
Например ф-ция в си:
[code]
void func(int a,int b)
{
}
[/code]
Чтобы вызвать в fasm
[code]
push 1
push 2
call func
add esp,8
[/code]
к примеру,то аргумент в Си a=>2, b=>1
если 2 аргумента int то размер int 4 байта, а их 2 то 4*2 = 8
Например ф-ция в си:
[code]
void func(int a,int b)
{
}
[/code]
Чтобы вызвать в fasm
[code]
push 1
push 2
call func
add esp,8
[/code]
к примеру,то аргумент в Си a=>2, b=>1
если 2 аргумента int то размер int 4 байта, а их 2 то 4*2 = 8
Who is online
Users browsing this forum: No registered users and 2 guests