Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Zloy_Gelud



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
CF_TEXT = 1;
CF_UNICODETEXT = 13;
CF_OEMTEXT = 7;
 
if not ClipBoard then ClipBoard = {}; end
 
ClipBoard.SetData = function (vData, nFormat)
    nFormat = nFormat or CF_TEXT;
    local hWnd = Application.GetWndHandle();
    local tData, hLock, hMemory, nSize, hStruct
    if (type(vData) == "number") and (vData == 0) then
        hMemory = vData;
    else
        if (type(vData) == "string") then
            nSize = #vData;
        else
            return -1;
        end
        nSize = nSize + 1;
        if (nFormat == CF_UNICODETEXT) then
            hMemory = tonumber(DLL.CallFunction("kernel32.dll", "GlobalAlloc", "66,"..(nSize * 2), DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
        else
            hMemory = tonumber(DLL.CallFunction("kernel32.dll", "GlobalAlloc", "66,"..nSize, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
        end
 
        local STR1 = MemoryEx.DefineStruct{STRING("char", nSize)};
        local STR2 = MemoryEx.DefineStruct{STRING("wchar", nSize, 1, MEMEX_UNICODE)};
        local STR3 = MemoryEx.DefineStruct{BYTE("byte")};
 
        if (hMemory == 0) then return -1; end
        hLock = tonumber(DLL.CallFunction("kernel32.dll", "GlobalLock", hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
        if (hLock == 0) then return -1; end
        if (nFormat == CF_TEXT) or (nFormat == CF_OEMTEXT) then
            hStruct = MemoryEx.AssignStruct(hLock, STR1);
            hStruct.char = vData;
        elseif (nFormat == CF_UNICODETEXT) then
            hStruct = MemoryEx.AssignStruct(hLock, STR2);
            hStruct.wchar = vData;
        else
            hStruct = MemoryEx.AssignStruct(hLock, STR3);
            hStruct.byte = vData;
        end
        DLL.CallFunction("kernel32.dll", "GlobalUnlock", hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
    end
    if (DLL.CallFunction("user32.dll", "OpenClipboard", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL) == "0") then
        hStruct:Close();
        return -1;
    end
    if (DLL.CallFunction("user32.dll", "EmptyClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL) == "0") then
        hStruct:Close();
        return -1;
    end
    if (DLL.CallFunction("user32.dll", "SetClipboardData", nFormat..","..hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL) == "0") then
        hStruct:Close();
        DLL.CallFunction("user32.dll", "CloseClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
        return -1;
    end
    hStruct:Close();
    DLL.CallFunction("user32.dll", "CloseClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
    return hMemory;
end
 
--ClipBoard.SetData("Ru-Board");
ClipBoard.SetData("Это Спарта!", CF_UNICODETEXT);

Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 15:16 17-01-2013 | Исправлено: Zloy_Gelud, 15:20 17-01-2013
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru