johnfoundф64. не позволяет загружать длл и другие ограничения у неё есть. К тому же она легко эмулируется набором 68.12 и 68.26.
read_clipboard:
in:
eax = ?
ebx = ?
ecx = buffer
edx = format
out:
eax = size
edx = buffer
Самый простой вариант > 90% случаев
Code:
/* somwhere in .bss */
void *buffer;
int size;
/* main code */
buffer = read_clipboard(buffer, &size, format);
if( size != 0 )
{
profit();
}
Bce операции с блокировками и памятью выполняет ядро. Если приложение передаёт ненулевой указатель то буфер должен быть создан 68.12.
Если приложение умеет вставлять не только текст
Code:
if( open_clipboard() )
{
get_clipborad_info(&info_text, FORMAT_TEXT);
get_clipborad_info(&info_bitmap, FORMAT_BITMAP);
get_clipborad_info(&info_raw, FORMAT_RAW);
do_something();
buffer = read_clipboard(buffer, &size, format);
if( size != 0 )
{
do_even_more();
profit();
}
close_clipboard();
}
После обработки буфера приложение может его сохранить, удалить , изменить размер, или вернуть физические страницы ядру.