1

Тема: WSH,VBS,JS: Drag & Drop файлов

Доброго дня! Есть варианты эмулировать перетаскивание файла в окно другой программы?
Указали файл, и он закинулся в нужное окно.
На AutoHotkey знаю что возможно, но его использовать не получится.

2 (изменено: Xameleon, 2023-05-07 20:00:43)

Re: WSH,VBS,JS: Drag & Drop файлов

fkhlamingo, приветствую ! Вы уверены, что правильно выбрали вектор решения задачи ? У приложения точно нет возможности передачи файла через параметры командной строки ? Если возможно - расскажите подробнее что за программа, с которой хотите наладить взаимодействие и какая конечная цель.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3 (изменено: fkhlamingo, 2023-05-08 14:41:31)

Re: WSH,VBS,JS: Drag & Drop файлов

Xameleon спасибо за отклик! Выбор правильный и наверняка единственный, только вот поискав решение, понял что оно маловероятно есть на этих языках.
Через ком строку можно передавать, но приложение кривое и большое, можно ждать открытия файла десятки секунд, так оно и происходит при запуске из проводника, а при перетаскивании моментально, ехе большой и видимо делает проверки безопасности и тянет много библиотек, не думаю что название программы о чём то скажет, это одна из CAD.

4

Re: WSH,VBS,JS: Drag & Drop файлов

Не обязательно решение именно на этих языках, главное чтобы то что встроено в систему.

5 (изменено: fkhlamingo, 2023-05-08 14:41:19)

Re: WSH,VBS,JS: Drag & Drop файлов

.....

6 (изменено: fkhlamingo, 2023-05-08 15:08:10)

Re: WSH,VBS,JS: Drag & Drop файлов

Если нет готового решения по Drag & Drop, подскажите что из встроенного в систему может использовать WINAPI?

7

Re: WSH,VBS,JS: Drag & Drop файлов

Очевидно, PowerShell.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: WSH,VBS,JS: Drag & Drop файлов

Для умных людей всё очевидно).
Посмотрел примеры, тяжёлый синтаксис.
Тогда такой вопрос, как из JS зайти в PowerShell?
В той проге есть своя среда выполнения, она крутится на NODE JS внутри своего процесса и имеет возможность обращаться к COM объектам.

9

Re: WSH,VBS,JS: Drag & Drop файлов

Я не подскажу, но, думаю, вопрос посильный для ChatGPT или Bing chat.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: WSH,VBS,JS: Drag & Drop файлов

Ну вот, то в гугл слали, теперь в жпт. Скоро живых людей не останется).

11

Re: WSH,VBS,JS: Drag & Drop файлов

А чем вас чат жпт не устраивает?
Благодаря ему вы не тратите ни своё время (в ожидании ответа с форума) ни форумчан (время потраченное на ответы на банальные вопросы).
По теме топика, если дрег энд дроп осуществлен через ком интерфейс, то без инжекта никак не автоматизируете.

12

Re: WSH,VBS,JS: Drag & Drop файлов

Не все с жпт дружат.
Дрег энд дроп обычный, на анк через postmessage работает.
Если вопрос банальный значит я не особо разбираюсь если не в состоянии найти на него ответ.
Послать в гугл или куда подальше легко, дайте пожалуйста ответ по существу если всё так просто по вашему.

13

Re: WSH,VBS,JS: Drag & Drop файлов

Если с жпт не дружите, то в гугле-то вас не забанили?
https://www.google.com/search?q=run+powershell+from+js

14

Re: WSH,VBS,JS: Drag & Drop файлов

Советую пользоваться Bing чатом (из России через VPN), для популярных ЯП выдаёт в основном корректные результаты.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: WSH,VBS,JS: Drag & Drop файлов

fkhlamingo пишет:

В той проге есть своя среда выполнения, она крутится на NODE JS внутри своего процесса и имеет возможность обращаться к COM объектам.

Хм, а раз так, то что мешает из неё и зайти вместо drag & drop ?

fkhlamingo пишет:

Дрег энд дроп обычный, на анк через postmessage работает.

Так если есть код на PS, то остаётся просто конвертнуть его в пошик ? )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

16

Re: WSH,VBS,JS: Drag & Drop файлов

Xameleon пишет:

Хм, а раз так, то что мешает из неё и зайти вместо drag & drop ?

Куда зайти?

Xameleon пишет:

Так если есть код на PS, то остаётся просто конвертнуть его в пошик ? )

Что вы ругаетесь). Ничего же не понятно.

17

Re: WSH,VBS,JS: Drag & Drop файлов

fkhlamingo,

fkhlamingo пишет:

Куда зайти?

Имел в виду - зайти из скрипта и выполнить от туда необходимые действия. Ведь внутренняя среда для этого и планируется, вроде бы ?

fkhlamingo пишет:

Что вы ругаетесь). Ничего же не понятно.

Оговорился - Если етсь код на AHK, то его можно конвертнуть в пошик (PowerShell) ? )

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

18

Re: WSH,VBS,JS: Drag & Drop файлов

Xameleon пишет:

Ведь внутренняя среда для этого и планируется, вроде бы ?

Там много ограничений. И вопрос от этого остаётся прежним, как это сделать на JS.

Xameleon пишет:

Оговорился - Если етсь код на 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)
}