Вверх ↑
Ответов: 192
Рейтинг: 2
#1: 2024-08-23 13:46:03 ЛС | профиль | цитата
Сразу оговорюсь. "Плохому" учить не буду.

Ну вот так всегда,на самом интересном месте!

Gunta писал(а):
На чём написана программа?

Да черт его знает на чем она написана, вероятно RAD Studio либо какой нибудь не сильно старый делфи.

Gunta писал(а):
Как будет организован удалённый доступ? (rdp, anydesk, teamviewer, vnc или что-то другое)

планировал rdp, так как можно сразу грузить рабочую оболочку(среду,программу,окно) при подключении.

пример отличный
схема


Add(MainForm,12345724,203,224)
{
Width=1103
Height=712
Point(Width)
Point(Height)
Point(Handle)
Point(onClose)
link(onCreate,4710989:doExec,[])
link(onClose,16747618:doEvent1,[(254,251)(254,370)])
}
Add(WinExec,4710989,301,238)
{
FileName="C:\Program Files (x86)\HxD\HxD.exe"
Mode=6
link(onExec,5919204:doDeferredEvent,[])
}
Add(DeferredEvent,5919204,357,238)
{
Delay=200
InData=0
Data=Integer(0)
link(onDeferredEvent,14050507:doEvent1,[])
}
Add(FindWindow,103464,462,238)
{
ClassName="TFormMain.UnicodeClass"
SkipParam=1
link(onFind,2003020:doEvent1,[])
}
Add(PosWindow,15576889,462,301)
{
link(Handle,11570385:Var2,[])
}
Add(SetParent,1432327,574,238)
{
link(NewParent,3315338:Handle,[])
}
Add(SizeWindow,2894384,504,336)
{
link(Handle,11570385:Var3,[(510,278)])
link(Width,3315338:Width,[(517,201)(573,201)])
link(Height,3315338:Height,[(524,208)(580,208)])
}
Add(Hub,14050507,406,238)
{
OutCount=5
link(onEvent1,103464:doFind,[])
link(onEvent2,15576889:doLeft,[(452,251)(452,307)])
link(onEvent3,15576889:doTop,[(445,258)(445,314)])
link(onEvent4,2894384:doWidth,[(438,265)(438,342)])
link(onEvent5,2894384:doHeight,[(431,272)(431,349)])
}
Add(GetDataEx,11570385,462,273)
{
link(Data,103464:Handle,[])
}
Add(WinBorders,9248978,574,287)
{
BorderStyle=0
}
Add(Hub,2003020,532,238)
{
OutCount=3
link(onEvent1,1432327:doSetParent,[])
link(onEvent2,9248978:doSetBorderStyle,[(564,251)(564,293)])
link(onEvent3,9248978:doSetWinStyle,[(557,258)(557,300)])
}
Add(Label,3315338,560,161)
{
Width=1087
Height=674
Align=5
Caption=""
AutoSize=1
Point(Width)
Point(Height)
Point(Handle)
}
Add(Label,4467744,455,161)
{
Left=95
Width=100
Height=20
Caption=""
AutoSize=1
}
Add(WinExec,2256668,301,350)
{
FileName="Taskkill"
Param="/IM hxd.exe /F"
Point(doConsoleExec)
Point(doConsoleInput)
Point(onErrorExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleError,5275440:doCharset,[])
}
Add(Hub,16747618,273,364)
{
link(onEvent1,2256668:doConsoleExec,[])
}
Add(Message,9596092,399,378)
{
}
Add(Charset,5275440,357,378)
{
link(onCharset,9596092:doMessage,[])
}


А то я справку в хиасме по компонентам окон тыкал тыкал нихрена не понял как это работает.

Спустя какое то время экспериментов потихоньку начал догонять. Вот что значит "пинок животворящий" в правильном направлении!

Теперь самое интересное как запретить выполнение окна "О ПРОГРАММЕ"
У меня родился такой вариант

Add(MainForm,12345724,203,224)
{
Width=1103
Height=712
Point(Width)
Point(Height)
Point(Handle)
Point(onClose)
link(onCreate,4710989:doExec,[])
link(onClose,16747618:doEvent1,[(254,251)(254,370)])
}
Add(WinExec,4710989,301,238)
{
FileName="C:\Program Files (x86)\HxD\HxD.exe"
Mode=6
link(onExec,5919204:doDeferredEvent,[])
}
Add(DeferredEvent,5919204,357,238)
{
Delay=200
InData=0
Data=Integer(0)
link(onDeferredEvent,14050507:doEvent1,[])
}
Add(FindWindow,103464,462,238)
{
ClassName="TFormMain.UnicodeClass"
SkipParam=1
link(onFind,2003020:doEvent1,[])
}
Add(PosWindow,15576889,462,301)
{
link(Handle,11570385:Var2,[])
}
Add(SetParent,1432327,574,238)
{
link(NewParent,3315338:Handle,[])
}
Add(SizeWindow,2894384,504,336)
{
link(Handle,11570385:Var3,[(510,278)])
link(Width,3315338:Width,[(517,201)(573,201)])
link(Height,3315338:Height,[(524,208)(580,208)])
}
Add(Hub,14050507,406,238)
{
OutCount=6
link(onEvent1,103464:doFind,[])
link(onEvent2,15576889:doLeft,[(452,251)(452,307)])
link(onEvent3,15576889:doTop,[(445,258)(445,314)])
link(onEvent4,2894384:doWidth,[(438,265)(438,342)])
link(onEvent5,2894384:doHeight,[(431,272)(431,349)])
}
Add(GetDataEx,11570385,462,273)
{
link(Data,103464:Handle,[])
}
Add(WinBorders,9248978,574,287)
{
BorderStyle=0
}
Add(Hub,2003020,532,238)
{
OutCount=3
link(onEvent1,1432327:doSetParent,[])
link(onEvent2,9248978:doSetBorderStyle,[(564,251)(564,293)])
link(onEvent3,9248978:doSetWinStyle,[(557,258)(557,300)])
}
Add(Label,3315338,560,161)
{
Width=1087
Height=674
Align=5
Caption=""
AutoSize=1
Point(Width)
Point(Height)
Point(Handle)
}
Add(Label,4467744,455,161)
{
Left=95
Width=100
Height=20
Caption=""
AutoSize=1
}
Add(WinExec,2256668,301,350)
{
FileName="Taskkill"
Param="/IM hxd.exe /F"
Point(doConsoleExec)
Point(doConsoleInput)
Point(onErrorExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleError,5275440:doCharset,[])
}
Add(Hub,16747618,273,364)
{
link(onEvent1,2256668:doConsoleExec,[])
}
Add(Message,9596092,399,378)
{
}
Add(Charset,5275440,357,378)
{
link(onCharset,9596092:doMessage,[])
}
Add(FindWindow,4301125,553,406)
{
ClassName="TXmInfoForm.UnicodeClass"
SkipParam=1
link(onFind,8345231:doClose,[])
}
Add(WinTools,8345231,609,385)
{
}
Add(Timer,7888541,497,406)
{
Interval=1
link(onTimer,4301125:doFind,[])
}



Данный пример к сожалению будет работать только с программой hxd
просто с блокнотом сильно банально а тут сразу куча подводных камней вылезло.
Например приложение не закрывалось после закрытия основной формы. И повторный запуск приложения был невозможен. Возникала ошибка неверный дескриптор окна. Поэтому пришлось организовать схему убийства процесса после закрытия окна.

Для изыскания нужной инфы для параметров пришлось собрать простую схемку
схема перечислителя окон

Add(MainForm,2953706,21,105)
{
Width=1028
Height=544
link(onCreate,2329171:doEnum,[])
}
Add(WinEnum,2329171,112,119)
{
Point(doEnumChildWindows)
Point(onEnumChildWindows)
Point(ParentHandle)
Point(ClassName)
Point(GetActiveWindow)
link(onFindWindow,9698407:doEvent1,[(163,125)(163,132)])
}
Add(FormatStr,7744462,119,196)
{
DataCount=4
Mask="%1 HANDEL %2 CLASSNAME %3 GETACTIVE %4"
link(onFString,14928013:doAdd,[(181,202)(181,209)])
link(Str1,9121130:GetData,[(125,188)(237,188)])
link(Str2,2329171:Handle,[(132,174)(118,174)])
link(Str3,2329171:ClassName,[(139,174)(125,174)])
link(Str4,2329171:GetActiveWindow,[(146,174)(132,174)])
}
Add(Hub,9698407,182,126)
{
link(onEvent1,9121130:doData,[(214,132)(214,153)])
link(onEvent2,7744462:doString,[(208,139)(208,171)(107,171)(107,202)])
}
Add(EventFromData,9121130,231,147)
{
}
Add(Memo,14928013,210,203)
{
Top=10
Width=990
Height=480
}

карма: 0

0
Редактировалось 5 раз(а), последний 2024-08-23 22:23:09