Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 8
1

Копирование набранной в консоли строки в буфер обмена Windows

13.06.2012, 16:00. Просмотров 1488. Ответов 4
Метки нет (Все метки)


ассемблер под windows, задание такое: Копирование набранной в консоли строки в буфер обмена Windows.
программа есть, только работает некорректно, буфер очищает, но не копирует. помогите пожалуйста как-нить!!!!!
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.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
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2012, 16:00
Ответы с готовыми решениями:

Поместить текстовую строку в буфер обмена Windows
Итак вопрос: как поместить текстовую строку в буфер обмена Windows работая на ассемблере под...

Копирование из паскаля в буфер обмена Windows
В общем возможно ли осуществить такую операцию: После выполнения программы, скопировать...

Копирование текста в буфер обмена в Windows XP
Здравствуйте. Насколько я понял, в WinXP копирование в буфер посредством ВАТ-файла возможно лишь...

hex для заданной строки переписать попарно справа налево и копирование в буфер обмена
Всем привет! Прошу помочь решить задачу: есть команда для получения cid с SDcard на андроид...

4
Заблокирован
13.06.2012, 16:27 2
Ну не знаю... Я бы посоветовал тебе хотябы текст прокомментировать. Так больше вероятности, что кто-то за решение возьмётся
0
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 8
13.06.2012, 18:21  [ТС] 3
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.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   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    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
0
1 / 1 / 0
Регистрация: 12.10.2011
Сообщений: 8
13.06.2012, 19:17  [ТС] 4
Этим проблему не решишь, завтра экзамен!
0
2821 / 1630 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
14.06.2012, 21:52 5
Попробуй в 77-й строке ещё GMEM_DDESHARE добавить.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2012, 21:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

emacs в консоли и буфер обмена
Доброго времени суток. Начинаю осваивать emacs, и возникла проблема с копированием текста из...

Копирование изображения в буфер обмена
Есть Bitmap с некоторым изображением. К сожалению следующий код работает не совсем корректно....

Копирование поля в буфер обмена
Доброе утро. Для автоматического копирования поля формы использую код на кнопке KeyboardLanguage =...

Копирование в буфер обмена средствами JS
Всем доброго времени суток! Нашел в блоге Hacks Mozilla вот такую статью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.