Сразу оговорюсь. "Плохому" учить не буду.
Ну вот так всегда,на самом интересном месте!
Gunta писал(а):
На чём написана программа?Да черт его знает на чем она написана, вероятно RAD Studio либо какой нибудь не сильно старый делфи.
Gunta писал(а):
Как будет организован удалённый доступ? (rdp, anydesk, teamviewer, vnc или что-то другое)планировал rdp, так как можно сразу грузить рабочую оболочку(среду,программу,окно) при подключении.
пример отличный
![](/img/icon_plus.gif)
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,[])
}
Спустя какое то время экспериментов потихоньку начал догонять. Вот что значит "пинок животворящий" в правильном направлении!
Теперь самое интересное как запретить выполнение окна "О ПРОГРАММЕ"
У меня родился такой вариант
![](/img/icon_plus.gif)
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
просто с блокнотом сильно банально а тут сразу куча подводных камней вылезло.
Например приложение не закрывалось после закрытия основной формы. И повторный запуск приложения был невозможен. Возникала ошибка неверный дескриптор окна. Поэтому пришлось организовать схему убийства процесса после закрытия окна.
Для изыскания нужной инфы для параметров пришлось собрать простую схемку
![](/img/icon_plus.gif)
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
}