Тема: WSH,VBS,JS: Drag & Drop файлов
Доброго дня! Есть варианты эмулировать перетаскивание файла в окно другой программы?
Указали файл, и он закинулся в нужное окно.
На AutoHotkey знаю что возможно, но его использовать не получится.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → WSH,VBS,JS: Drag & Drop файлов
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Доброго дня! Есть варианты эмулировать перетаскивание файла в окно другой программы?
Указали файл, и он закинулся в нужное окно.
На AutoHotkey знаю что возможно, но его использовать не получится.
fkhlamingo, приветствую ! Вы уверены, что правильно выбрали вектор решения задачи ? У приложения точно нет возможности передачи файла через параметры командной строки ? Если возможно - расскажите подробнее что за программа, с которой хотите наладить взаимодействие и какая конечная цель.
Xameleon спасибо за отклик! Выбор правильный и наверняка единственный, только вот поискав решение, понял что оно маловероятно есть на этих языках.
Через ком строку можно передавать, но приложение кривое и большое, можно ждать открытия файла десятки секунд, так оно и происходит при запуске из проводника, а при перетаскивании моментально, ехе большой и видимо делает проверки безопасности и тянет много библиотек, не думаю что название программы о чём то скажет, это одна из CAD.
Не обязательно решение именно на этих языках, главное чтобы то что встроено в систему.
.....
Если нет готового решения по Drag & Drop, подскажите что из встроенного в систему может использовать WINAPI?
Очевидно, PowerShell.
Для умных людей всё очевидно).
Посмотрел примеры, тяжёлый синтаксис.
Тогда такой вопрос, как из JS зайти в PowerShell?
В той проге есть своя среда выполнения, она крутится на NODE JS внутри своего процесса и имеет возможность обращаться к COM объектам.
Я не подскажу, но, думаю, вопрос посильный для ChatGPT или Bing chat.
Ну вот, то в гугл слали, теперь в жпт. Скоро живых людей не останется).
А чем вас чат жпт не устраивает?
Благодаря ему вы не тратите ни своё время (в ожидании ответа с форума) ни форумчан (время потраченное на ответы на банальные вопросы).
По теме топика, если дрег энд дроп осуществлен через ком интерфейс, то без инжекта никак не автоматизируете.
Не все с жпт дружат.
Дрег энд дроп обычный, на анк через postmessage работает.
Если вопрос банальный значит я не особо разбираюсь если не в состоянии найти на него ответ.
Послать в гугл или куда подальше легко, дайте пожалуйста ответ по существу если всё так просто по вашему.
Если с жпт не дружите, то в гугле-то вас не забанили?
https://www.google.com/search?q=run+powershell+from+js
Советую пользоваться Bing чатом (из России через VPN), для популярных ЯП выдаёт в основном корректные результаты.
В той проге есть своя среда выполнения, она крутится на NODE JS внутри своего процесса и имеет возможность обращаться к COM объектам.
Хм, а раз так, то что мешает из неё и зайти вместо drag & drop ?
Дрег энд дроп обычный, на анк через postmessage работает.
Так если есть код на PS, то остаётся просто конвертнуть его в пошик ? )
Хм, а раз так, то что мешает из неё и зайти вместо drag & drop ?
Куда зайти?
Так если есть код на PS, то остаётся просто конвертнуть его в пошик ? )
Что вы ругаетесь). Ничего же не понятно.
fkhlamingo,
Куда зайти?
Имел в виду - зайти из скрипта и выполнить от туда необходимые действия. Ведь внутренняя среда для этого и планируется, вроде бы ?
Что вы ругаетесь). Ничего же не понятно.
Оговорился - Если етсь код на AHK, то его можно конвертнуть в пошик (PowerShell) ? )
Ведь внутренняя среда для этого и планируется, вроде бы ?
Там много ограничений. И вопрос от этого остаётся прежним, как это сделать на JS.
Оговорился - Если етсь код на AHK, то его можно конвертнуть в пошик (PowerShell) ? )
А это как? На ахк я такой код проверял, отлично работает.
DropFiles( FileList, wTitle="", Ctrl="", X=0, Y=0, NCA=0 )
{
offset := 20
VarSetCapacity(dropFiles, StrPut(fileList) + offset + 2, 0)
loop parse, fileList, `n, `r
StrPut(A_LoopField, &dropFiles + offset, StrLen(A_LoopField), "CP0")
, offset += StrLen(A_LoopField) + 1
NumPut(0, &DROPFILES + offset, "UInt") ; завершиться должно 2-мя нулями подряд
nSize := offset + 4
pDP:=&DROPFILES
NumPut(20, pDP+0, "UInt") ; Смещение списка файлов с начала этой структуры, в байтах.
NumPut(X, pDP+4, "UInt")
NumPut(Y, pDP+8, "UInt")
NumPut(NCA, pDP+12, "UInt") ; Если этот элемент является значение TRUE, то X и Y определяет экранные координаты точки в нерабочей области окна. Если значение FALSE, X и Y определяет клиентские координаты точки в рабочей области.
NumPut(0, pDP+16, "UInt") ; Значение, которое указывает, содержит ли файл ANSI или Unicode символы. Если значение равно нулю, то файл содержит символы ANSI. В противном случае, он содержит Unicode символы.
hDrop := DllCall( "GlobalAlloc", UInt, 0x42, UInt, nSize, Ptr )
pData := DllCall( "GlobalLock", Ptr, hDrop, Ptr )
DllCall( "RtlMoveMemory", Ptr, pData, Ptr, pDP, UInt, nSize )
DllCall( "GlobalUnlock", Ptr, hDrop )
PostMessage, 0x233, hDrop, 0, %Ctrl%, %wTitle% ; WM_DROPFILES := 0x233
DllCall( "DragFinish", Ptr, hDrop)
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться