Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с буфером обмена 
:(
    Опции темы
vasya721
  Дата 13.6.2012, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 13.6.2012

Репутация: нет
Всего: нет



ассемблер под windows, задание такое: Копирование набранной в консоли строки в буфер обмена Windows. 
программа есть, только работает некорректно, буфер очищает, но не копирует. помогите пожалуйста как-нить!!!!!
Код

.386
.model flat, stdcall
 
includelib import32.lib
 
extrn   GetStdHandle: near
extrn   WriteConsoleA: near
extrn   ReadConsoleA: near
extrn   ExitProcess: near
extrn   FreeConsole: near
extrn   AllocConsole: near
extrn   SetConsoleTitleA: near
extrn   CharToOemA: near
extrn   CloseHandle: near
extrn   GlobalAlloc:near
extrn   GlobalLock:near
extrn   GlobalUnlock:near
extrn   OpenClipboard:near
extrn   SetClipboardData:near
extrn   CloseClipboard:near
;extrn   GlobalFree:near
extrn   CloseClipboard:near
extrn   EmptyClipboard:near
    
STD_OUTPUT_HANDLE   equ -11
STD_INPUT_HANDLE    equ -10
GMEM_DDESHARE       equ 2000h
GMEM_MOVEABLE       equ 2h
CF_TEXT         equ 1
KEY_EV              equ     1h
 
.data
    Std_Handle_Out  dd  ?
    Std_Handle_Input dd ?
 
    reserv      dd  ?
    text        dw  9 dup(?)
 
    wr_char     db  ?
    wr_cnt      dd  ?
 
    console_text    db  1024 dup(0)
 
    msg_exit    db  'Для выхода нажмите ESC', 10, 13, 0
    sTitle      db  'Lab_8', 0
    hg      dd  ?
.code
 
start:
    push    offset msg_exit
    push    offset msg_exit
    call    CharToOemA
 
    push    offset sTitle
    push    offset sTitle
    call    CharToOemA
    push    offset sTitle
    call    SetConsoleTitleA
 
        push    STD_OUTPUT_HANDLE
    call    GetStdHandle
    mov Std_Handle_Out, eax
 
        push    STD_INPUT_HANDLE
    call    GetStdHandle
    mov Std_Handle_Input, eax
    
    mov esi, offset msg_exit
    call    OutputString
 
        mov ebx, offset console_text
    call    Input_console
 
set_cplipboard:
    mov esi,offset console_text
    call    LengthString
    inc edi
    call    GlobalAlloc,GMEM_MOVEABLE,edi      
    cmp eax,0
    je  exit
    mov ebx,eax
    call    GlobalLock,ebx
    dec edi
    mov ecx,edi
    mov edi,eax
    mov esi,offset console_text
    cld
    rep movsb
    mov al,0
    stosb
    call    GlobalUnlock,ebx  
    call    EmptyClipboard  
    call    OpenClipboard, 0
    call    EmptyClipboard
    call    SetClipboardData,CF_TEXT,ebx
    call    CloseClipboard 
   ; call    GlobalFree,ebx
exit:   
    push 0
    call    ExitProcess 
 
LengthString    proc
    
        cld
    mov ecx, 65535
    xor eax, eax
    mov edi, esi
    repne   scasb
    dec edi
    sub edi, esi
 
    ret
LengthString    endp
 
OutputString    proc
 
    call    LengthString
 
    call    WriteConsoleA, Std_Handle_Out, esi, edi, offset wr_cnt, 0
 
    ret
OutputString    endp
 
 
Input_console proc
    xor eax, eax
    call    ReadConsoleA, Std_Handle_Input, offset text, 40, offset reserv
    jmp set_cplipboard
Input_console endp
 
 
end start



и батовщик
tasm32 /ml lab_8.asm
tlink32 /Tpe/ap/c/x lab_8.obj
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.