Zireael |
Отправлено: 11 Декабря, 2018 - 15:17:37
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как это сделать программно?
интересует конкретно копирование папки
code (Отобразить)CODE:external(INT, "OpenClipboard", "OpenClipboard", "User32.dll" );
external(INT, "CloseClipboard", "CloseClipboard", "User32.dll" );
external(INT, "EmptyClipboard", "EmptyClipboard", "User32.dll" );
external(INT, "SetClipboardData", "SetClipboardData", "User32.dll" );
external(INT, "GlobalAlloc", "GlobalAlloc", "Kernel32.dll" );
external(INT, "GlobalUnlock", "GlobalUnlock", "Kernel32.dll" );
external(INT, "GlobalFree", "GlobalFree", "Kernel32.dll" );
string s=pathfolder()+"temp"; // путь к файлу или папке
write_clipboard(s); // вызов функции
// функция принимает строку, путь к файлу/папке
// копирует в буфер нужную структуру и путь к файлу/папке
// тоже самое что Ctrl+C на выделенном файле/папке
function write_clipboard(string path)
{
int size_path=size(path);
OpenClipboard(0); // открыть буфер
EmptyClipboard(); // очистить
int hMem=GlobalAlloc(0, size_path+22); // выделить память
int dropfiles[4], point[2]; // DROPFILES и POINT structure
point[0]=0;
point[1]=0;
dropfiles[0]=20;
dropfiles[1]=address(#point[0]);
dropfiles[2]=0;
dropfiles[3]=0;
writeaddress(dropfiles[0], hMem); // записать структуру
writeaddress(dropfiles[1], hMem+4);
writeaddress(dropfiles[2], hMem+8);
writeaddress(dropfiles[3], hMem+16);
writeaddress(path, hMem+20); // записать путь в файлу/папке
writeaddress(formatic(0), hMem+size_path+22);
SetClipboardData(15, hMem); // запись в буфер
GlobalUnlock(hMem); // разблокировать память
GlobalFree(hMem); // освободить память
CloseClipboard(); // закрыть буфер
}
Запустить скрипт. После этого можно будет куда-нибудь вставить папку temp, которая в папке с kibor.exe. |
|
|
Zireael |
Отправлено: 20 Декабря, 2018 - 19:07:53
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Пробуйте так:
code (Отобразить)CODE:external(INT, "OpenClipboard", "OpenClipboard", "User32.dll" );
external(INT, "CloseClipboard", "CloseClipboard", "User32.dll" );
external(INT, "EmptyClipboard", "EmptyClipboard", "User32.dll" );
external(INT, "SetClipboardData", "SetClipboardData", "User32.dll" );
external(INT, "GlobalAlloc", "GlobalAlloc", "Kernel32.dll" );
external(INT, "GlobalUnlock", "GlobalUnlock", "Kernel32.dll" );
external(INT, "GlobalFree", "GlobalFree", "Kernel32.dll" );
string s=pathfolder()+"temp"; // путь к файлу или папке
write_clipboard(s); // вызов функции
// функция принимает строку, путь к файлу/папке
// копирует в буфер нужную структуру и путь к файлу/папке
// тоже самое что Ctrl+C на выделенном файле/папке
function write_clipboard(string path)
{
int size_path=size(path);
OpenClipboard(0); // открыть буфер
EmptyClipboard(); // очистить
int hMem=GlobalAlloc(0, size_path+22); // выделить память
writeaddress(20, hMem); // записать структуру
writeaddress(0, hMem+4);
writeaddress(0, hMem+8);
writeaddress(0, hMem+12);
writeaddress(0, hMem+16);
writeaddress(path, hMem+20); // записать путь в файлу/папке
writeaddress(formatic(0), hMem+size_path+21);
writeaddress(formatic(0), hMem+size_path+22);
SetClipboardData(15, hMem); // запись в буфер
GlobalUnlock(hMem); // разблокировать память
GlobalFree(hMem); // освободить память
CloseClipboard(); // закрыть буфер
} |
|
|
Zireael |
Отправлено: 12 Июня, 2020 - 13:57:53
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:#define STARTF_USESHOWWINDOW 1
external(INT, "CreateProcess", "CreateProcessA", "Kernel32.dll");
external(INT, "WaitForSingleObject", "WaitForSingleObject", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
double INFINITE = 4294967295;
PS("Set-Clipboard -Path ^'C:\Windows\Media^'"); // скопировать в буфер обмена папку C:\Windows\Media
function PS(string CommandLine)
{
int STARTUPINFOA[17], PROCESS_INFORMATION[4];
initialarray(#STARTUPINFOA[0], 0);
STARTUPINFOA[0]=68;
STARTUPINFOA[11]=STARTF_USESHOWWINDOW;
if(CreateProcess(0, "powershell.exe "+CommandLine, 0, 0, 0, 0, 0, 0, address(#STARTUPINFOA[0]), address(#PROCESS_INFORMATION[0])))
{
WaitForSingleObject(PROCESS_INFORMATION[0], INFINITE);
CloseHandle(PROCESS_INFORMATION[0]);
}
}
|
|
|
|