Вопрос

No comments
  • [quote="ALEXS1983"]Функция 2 - получить код нажатой клавиши.
    Существует ли описание кодов клавиш?... скажем в виде простой таблицы или чего-то подобного .[/quote]
    Не находил, я использую программу SCANCODE, которая есть в дистрибутиве.
  • [quote="pavelyakov"]Не находил, я использую программу SCANCODE, которая есть в дистрибутиве.[/quote]
    да про SCANCODE я знаю. Не очень-то удобна для реализации того что я хочу. :-)
  • А что именно хотите?
  • [quote="punk_joker"]А что именно хотите?[/quote]
    Хочу создать модуль DLL который эмулирует сис.функции КОС. В частности хочу реализовать Функция 2 - получить код нажатой клавиши
    Об этом если хочешь, можешь почитать здесь:
    http://kolibriosandfasm.mybb.ru/viewtopic.php?id=13
    Если влом читать всё, то читай со слов: "Так родилась идея создания DLL-модуля, который будет выполнять роль визуализатора результатов. "
  • "Как можно предсказать всевозможные вопросы, которые могут возникнуть у кого-то?"
    Иногда можно (в идеале), или почти все, в этом и заключается талант учителя. Знаешь, когда детям говорят, что чего-то нельзя, но не объясняют почему, то их это не особо вразумляет. Хотя, твои уроки больше напоминают блог.

    "Дельфи очень хорошая среда для программирования по сравнению Fasm"
    Fasm это вообще не среда программирования.

    Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. Таблицы есть на википедии.
  • [quote="Pathoswithin"]
    Сканкоды преобразуются в кодировку cp866 с учётом раскладки клавиатуры. .[/quote]
    Скан коды не зависят от раскладки, это ASCII коды от нее зависят
  • Ну я это и написал.
  • [b]ALEXS1983[/b],
    Забавная идея, по поводу Virus Total и Delphi 7 приложений, была такая мразота - W32/Induc.A, которая внедряла свой код в системные dcu Delphi <= 7 версии.
  • ALEXS1983, может ты на youtube видеоуроки позаписываешь?
  • [quote="pavelyakov"]ALEXS1983, может ты на youtube видеоуроки позаписываешь?[/quote]
    Шутишь однако :-)
  • В асм вставках дельфи есть такая команда как "ret $000c", при переносе процедуры в Fasm, там команда не работает, а обычной "ret" не отделаешься.
    Что эта команда "ret $000c" значит? и как быть ? Чем её заменить или как её обойти ?
    Похоже что она очень по существу, так как процедура в асм-вставках дельфи работает нормально только при ней, а не при Ret
  • Скорее всего там при возвращении сдвигается указатель стека (регистр esp)
    Так как число 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;
  • Пример вызова ф-ции си в асме.
    Например ф-ция в си:
    [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 5 guests