AlexKir писал(а):
Бррр.. А что папку "Рабочий стол" прочитать нельзя ?Там ярлыки лежат и в них же вроде инфа о координатах ...
(Извиняюсь если не вник в тему ...)
Тут у нас ситуация с точностью до наоборот выходит. Программа работает только на рабочем столе а при открытии папок нет! Я ради эксперимента открывала рабочий стол в папке, программа не работает.
Я так понимаю что проблема лежит где-то вот в этих строчках скрипта:
#pas
begin
// Поиск рабочего стола
//Win := FindWindow('Progman', 'Program Manager');
//Win := FindWindowEx(Win, 0, 'SHELLDLL_DefView', 0);
//Win := FindWindowEx(Win, 0, 'SysListView32', 'FolderView');
Win := ReadInteger(_Data,H,0);
// Получаем процесс рабочего стола
GetWindowThreadProcessId(Win, @vProcessId);
vProcess := OpenProcess(PROCESS_ALL_ACCESS, false, vProcessId);
То есть скрипт изначально находит только процесс самого рабочего стола игнорируя все прочие.
Но так как для меня весь этот латинский орнамент сродни узелковому письму, то я без посторонней помощи ничего и сделать не могу!
Вот пока как то так:
Add(MainForm,2953706,420,91)
{
Width=371
Height=264
BorderStyle=3
link(onCreate,9786774:doRead,[])
}
Add(InlineCode,13953824,259,196)
{
WorkPoints=#20:doGetLastActivePopup|
EventPoints=#20:onGetLastActivePopup|
DataPoints=#1:H|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|42:uses Windows, Messages, Kol, Share, Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|5: |9: public|17: H:THI_Event;|36: onGetLastActivePopup:THI_Event;|70: procedure doGetLastActivePopup(var _Data:TData; Index:word); |5: end;|0:|14:implementation|0:|4:type|25: PLVItem64 = ^TLVItem64;|27: TLVItem64 = packed record|28: mask : LongWord; |24: iItem : LongInt;|24: iSubItem : LongInt;|25: state : LongWord;|25: stateMask : LongWord;|25: alignment1: LongWord;|22: pszText : Int64;|24: cchTextMax: LongInt;|24: iImage : LongInt;|22: lParam : Int64;|24: iIndent : LongInt;|24: iGroupId : LongInt;|25: cColumns : LongWord;|25: alignment2: LongWord;|22: puColumns : Int64;|22: piColFmt : Int64;|24: iGroup : LongInt;|25: alignment3: LongWord;|4:end;|0:|42:procedure THiAsmUnit.doGetLastActivePopup;|5:const|19: cchTextMax=255;|3:var|17: Win: THandle;|30: vItem, nTextLength: DWORD;|22: LVItem: TLVItem64;|23: pLVItem: PLVItem64;|19: pszText: PChar;|24: svText: ShortString;|2: |22: vProcessId: DWORD;|20: vProcess: DWORD;|21: vPointer: ^DWORD;|20: dwWriten: DWORD;|4: |5:begin|27: // Поиск рабочего стола|54: //Win := FindWindow('Progman', 'Program Manager');|57: //Win := FindWindowEx(Win, 0, 'SHELLDLL_DefView', 0);|65: //Win := FindWindowEx(Win, 0, 'SysListView32', 'FolderView');|34: Win := ReadInteger(_Data,H,0);|4: |38: // Получаем процесс рабочего стола|47: GetWindowThreadProcessId(Win, @vProcessId);|67: vProcess := OpenProcess(PROCESS_ALL_ACCESS, false, vProcessId);|4: |61: //vItemCount := SendMessage(Win, LVM_GETITEMCOUNT, 0, 0);|4: |49: // Выделяем в нем память под текстовый буффер|101: pszText := VirtualAllocEx(vProcess, nil, cchTextMax, MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);|49: // Выделяем в нем память под структуру LVITEM|108: pLVItem := VirtualAllocEx(vProcess, nil, SizeOf(TLVItem64), MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);|26: // Заполняем структуру|43: ZeroMemory(@LVItem, SizeOf(TLVItem64));|29: LVItem.mask := LVIF_TEXT;|37: LVItem.pszText := Int64(pszText);|36: LVItem.cchTextMax := cchTextMax;|25: LVItem.iSubItem := 0;|4: |52: vItem := SendMessage(Win, LVM_GETHOTITEM, 0, 0);|4: |44: // Пишем ее в память удаленного процесса|80: WriteProcessMemory(vProcess, pLVItem, @LVItem, SizeOf(TLVItem64), dwWriten);|78: nTextLength := SendMessage(Win, LVM_GETITEMTEXT, vItem, Integer(pLVItem));|4: |23: // Читаем результат|36: ZeroMemory(@svText, cchTextMax);|76: ReadProcessMemory(vProcess, pszText, @svText[1], nTextLength, dwWriten);|4: |57: _hi_OnEvent(onGetLastActivePopup, PChar(@svText[1]));|4: |54: VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);|26: CloseHandle(vProcess);|9:end; |0:|4:end.|
link(onGetLastActivePopup,6374261:doEvent1,[])
link(H,4902645:Var3,[(265,180)])
}
Add(Timer,9968603,49,196)
{
Interval=250
link(onTimer,7049642:doWinInfo,[])
}
Add(MouseEvent,1002856,84,133)
{
Point(Handle)
}
Add(GetDataEx,4902645,98,175)
{
link(Data,1002856:Handle,[])
}
Add(WinInfo,7049642,98,196)
{
link(onWinInfo,10838000:doEvent1,[])
link(Handle,4902645:Var2,[])
}
Add(If_else,16505252,196,196)
{
Op2=String(FolderView)
link(onTrue,13953824:doGetLastActivePopup,[])
link(Op1,15616720:Var1,[(202,187)(181,187)])
}
Add(Label,530648,196,266)
{
Left=10
Top=10
Width=4
Height=4
Caption=""
link(Text,15616720:Var3,[(202,250)])
}
Add(Hub,10838000,147,196)
{
link(onEvent1,16505252:doCompare,[])
link(onEvent2,530648:doText,[(186,209)(186,272)])
}
Add(GetDataEx,15616720,175,245)
{
Angle=3
link(Data,7049642:Caption,[(111,250)])
}
Add(StrCatDelim,2583798,672,196)
{
Delimiter="\"
link(onStrCatDlm,1961152:doText,[])
link(Str1,12301240:Value,[])
link(Str2,2760275:Value,[(685,184)(626,184)(626,240)(559,240)])
}
Add(Memory,2760275,553,196)
{
link(onData,2583798:doStrCatDlm,[])
}
Add(Registry,9786774,609,105)
{
HKey=1
Key="Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Value="Desktop"
link(onRead,12301240:doValue,[])
}
Add(Memory,12301240,672,105)
{
}
Add(Image,9209749,777,546)
{
Left=105
Top=25
Width=140
Height=130
Point(PHandle)
}
Add(Img_Loader,11538422,602,546)
{
link(onLoad,10177469:doWork2,[])
link(FileName,16417398:getVar,[])
}
Add(Hub,6374261,441,196)
{
link(onEvent1,2760275:doValue,[])
link(onEvent2,598547:doValue,[(467,209)(467,258)(352,258)(352,419)])
}
Add(BlockFind,12782529,728,420)
{
IncludeBlock=1
StartBlock="."
EndBlock="-"
link(onSearch,3889447:doModify,[])
}
Add(StrCat,11460164,686,420)
{
Str2="-"
link(onStrCat,12782529:doSearch,[])
}
Add(LineBreakEx,15137271,490,581)
{
Caption="Пиу-Пиу!"
}
Add(LineBreakEx,8440338,672,245)
{
Caption="BooM!"
Type=3
link(_Data,2583798:Result,[])
}
Add(LineBreakEx,16417398,602,511)
{
Caption="BooM!"
Type=2
}
Add(If_else,8119649,336,546)
{
Op2=String(jpg)
link(onTrue,4956770:doWork2,[])
link(onFalse,12063203:doCompare,[(380,559)(380,580)(324,580)(324,601)])
AddHint(-72,13,39,13,Op2)
}
Add(Timer,11642444,504,546)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,11538422:doLoad,[])
}
Add(If_else,12063203,336,595)
{
Op2=String(bmp)
link(onTrue,4956770:doWork3,[(417,601)])
link(onFalse,4585907:doCompare,[(380,608)(380,629)(324,629)(324,650)])
AddHint(-71,8,45,13,Op2)
}
Add(HubEx,4956770,413,546)
{
link(onEvent,2021123:doEvent1,[])
}
Add(Gif,10128974,658,644)
{
DrawSource=2
Point(doStop)
link(onDraw,12671456:doWork2,[])
link(FileName,10571950:getVar,[])
}
Add(LineBreakEx,10571950,658,609)
{
Caption="BooM!"
Type=2
}
Add(If_else,4585907,336,644)
{
Op2=String(gif)
link(onTrue,5786367:doTimer,[])
link(onFalse,15870454:doCompare,[(380,657)(380,681)(324,681)(324,720)])
AddHint(-71,7,36,13,Op2)
}
Add(Timer,5786367,413,644)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,10128974:doLoadFromFile,[])
}
Add(Memory,598547,413,413)
{
link(onData,13400667:doCompare,[])
}
Add(If_else,13400667,469,413)
{
link(onFalse,5143610:doData,[])
link(Op2,10372407:Value,[(482,401)(574,401)(574,463)(601,463)])
}
Add(DoData,5143610,532,420)
{
link(onEventData,10372407:doValue,[])
link(Data,598547:Value,[(538,408)(519,408)(519,455)(419,455)])
}
Add(Memory,10372407,595,420)
{
link(onData,11460164:doStrCat,[])
}
Add(LineBreak,10536234,189,546)
{
link(Out,8119649:doCompare,[])
Primary=[3677711,644,-126]
}
Add(HubEx,10177469,747,546)
{
link(onEvent,9209749:doLoad,[])
}
Add(Hub,2021123,441,546)
{
link(onEvent1,11642444:doTimer,[])
link(onEvent2,15137271:doWork,[(473,559)(473,587)])
}
Add(StrCase,3889447,770,420)
{
link(onModify,3677711:In,[])
}
Add(InfoTip,11068589,14,84)
{
Info=#30:определяем объект под курсором|
Font=[MS Sans Serif,10,1,16711680,1]
Width=337
Height=235
}
Add(InfoTip,9060510,574,42)
{
Info=#30:находим ссылку на рабочий стол|
Font=[MS Sans Serif,10,1,16711680,1]
Width=162
Height=116
}
Add(InfoTip,11807928,518,168)
{
Info=#26:формируем ссылку на объект|
Font=[MS Sans Serif,10,1,16711680,1]
Width=337
Height=109
}
Add(InfoTip,1574972,364,357)
{
Info=#18:проверям на повтор|
Font=[MS Sans Serif,10,1,16711680,1]
Width=274
Height=123
}
Add(InfoTip,8690916,658,371)
{
Info=#26:адаптируем к распознаванию|
Font=[MS Sans Serif,10,1,16711680,1]
Width=169
Height=95
}
Add(If_else,15870454,336,714)
{
Op2=String(png)
link(onTrue,3578532:doTimer,[])
link(onFalse,7883439:doCompare,[(380,727)(380,769)(324,769)(324,832)])
AddHint(-77,9,43,13,Op2)
}
Add(Timer,3578532,413,714)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,11356305:doEvent1,[])
}
Add(HubEx,12671456,747,651)
{
Angle=3
link(onEvent,10177469:doWork3,[])
}
Add(PNG,3612974,511,714)
{
Point(FileName)
Point(onAlphaBitmap)
Point(Bitmap)
link(FileName,2280810:getVar,[])
}
Add(LineBreakEx,2280810,511,686)
{
Caption="BooM!"
Type=2
}
Add(Hub,11356305,469,714)
{
OutCount=3
link(onEvent1,3612974:doLoad,[])
link(onEvent2,14830685:doTimer,[])
link(onEvent3,11116539:doWork,[(497,734)(497,769)])
}
Add(Timer,14830685,560,721)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,9248256:doData,[])
}
Add(DoData,9248256,616,721)
{
link(onEventData,5087991:doWork2,[])
link(Data,3612974:Bitmap,[(622,709)(607,709)(607,758)(517,758)])
}
Add(Bitmap,7896929,686,763)
{
Picture=[ZIP1647000078DAA5DC05D03E551506F025A54510541A54429010A9A11B4552E91E2941E9EE46BA1150BA44A53BA4110414903268A5BB1BE477679E77CEB77C7FC4616776DEDABDF7C4739E73CEDDDD779165265EB26BDB9C9FECD37FB22FF8C9BED427FB48DD54EDFBC796E83EB57DF0C107DDC71F7FDCF677DF7DB7BDBEF3CE3B83EFEC39E6A38F3E6AEF3FFCF0C3C16FBECB7BDFD763F3D9FB3AE6FBEFBFFFA939EA3919BFBEAFF3E45C631BABCAD397E5ADB7DEEAAEB8E28AEE2F7FF94BF7FBDFFFBEBBF8E28BBB3FFCE10FDDDFFFFEF7C158EFBDF7DE60BCBE8E6FBFFDF690711DEF98C8E3B3637D264B8ECB79B1693D7738BBC526F5F8EA17E3C5B6D12DF6893C758FFC175C704177E59557767FFAD39FBA7FFFFBDFDD5FFFFAD7EEE1871F1EE20BAFAFBFFE7A7B7DF3CD37077354BFE4FB3E26AA2EE4CC78D52FDEC7C6553F3AF14FDFBE8EEDDBA19E5F31110CD8E3BF9C93B1BD566C3A36FE79F5D55787D821EFCDF3C61B6F0CD1B37F4C64A832C58ED185DDE20F7356F9FABA555BFA2EF293A37F4EC54D5FF77ECC543BC577B1879DFC79ADBAE5F370BEAFB6205FE6EA1FDB8F8BC81CBB2696E30FBF55BE88EDFA98A85C51632073543FF46588BDEFBFFFFE21DFC506B17BB557F5B1EF337E648A8F9CFBDBDFFEB65B7BEDB5BBF9E79FBFFBC637BE31E0DA514619A59B669A69BA85165AA85B7FFDF5BB934E3A69A0377DA3738D973E57D6F88EFFB257DBFBBDE2C6E7F8F9E8A38FEE461E79E46EA49146EA36DF7CF3213A0E87E97C5F65CA77AFBDF65A77E08107765FFAD2979A8EC69D649249BA75D75DB73BFEF8E3BB73CF3DB7BBFBEEBBBB0B2FBCB0CDBBD9669B35FDB38D3FFEF8DD72CB2DD7BDF0C20BDD4B2FBD3498A7E2205C12DC050BD97D4E7C39BEF27774A99C35E594533639C95CEDEBB851471DB5FDF6FDEF7F7FE0FFE84DD7606D8B2DB6E8C61A6BAC811EC63AFDF4D3871C1F39FA5C1F1BEEBCF3CEDD98638ED9CE5F70C10507FAF36374AA7A270FC0983DFAD6F8A971517939FC10FBF1476409DE975E7AE9810FEFBCF3CE76FC33CF3CD3E6F0EA9879E79D7788AFEDB1197C675B73CD35BB471F7D743047783D1C187CCD3EFBECED7858AC311A4CC7D7CE8FDED1DD1E3BD59C57392FFEA8D83EF3CC33DB18B14FCD05EA825B6EB9A5E1F1C5175FECFEF18F7FB4DFD50ED9F89DBC75A3FF18638C31E4987DF7DDB7CD9DB80C5E6BED0067B61966986180E1F82B3E27AB58C6395EA37FF56B5FF760B0FEE6FDC9279F3C840F339EE3FFF9CF7F76679D7556F7E4934F7677DC714777F3CD37371FEEB0C30E038CD78DDFABCFE95C8FA9E327CED822F2DC77DF7D039B250F0717E123C78B3BBF7BF5D9789517AAEE156F8E4D7DE6BBDFFCE6374DF7F83E32C1F6638F3DD66C73D34D37B5D838FBECB3BBABAFBEBA7BFCF1C787C478F0DEF77FE5F8B1C71EBB8DFBD4534F754F3FFDF4A7F261F0968DDD2B47C5EF7DDD63CB11E9DECFA935B71D77DC7183CFC6B23FF7DC730DEFEAE37DF6D9A73BEFBCF3BA134E38A13BE49043BA1D77DCB17BE8A187BA1B6EB8A171B46DF4D1476FAF7CC606F96EB4D1461BE872EDB5D7764F3CF144F7B7BFFDAD61876DC552ADB55E79E595C139354E13CFE139FAD3D93E22BFD79CEFDCCA79F99E5EC670AE71E98DDFECA79D765AB7F5D65B77C71E7B6CB7F7DE7B77871E7A6877F0C10777DB6EBB6DD39D9DD65A6BAD418C572C645B75D5559B0FFFF5AF7F75E79C734EABB96FBDF5D6866FB88A1EE64EEEFDCE77BE33D0A5726264744EF6C47B6A94DA5745C78CE598C4BE7C72D4514735F9E875D75D77359F8A6F32FEEA57BFEA7EF6B39F75FBEFBF7FB7D34E3B35BEDA6BAFBDBA030E38A03BE698635A9FE45873F1297B9C7AEAA98D0B8D631EAF72FC2F7FF9CB6EBFFDF66B3863EF1B6FBCB1BBF7DE7B9B0D9237C31930567364E2B0F25CE5BABECFFBF9BD9F336A4D461FF5C544134DD4EC0EAF134F3C7137F5D453771B6CB041AB5D0E3FFCF026937AECB2CB2EEB2EB9E492B6EB9B2EBAE8A2A6373E940BD4327A48B8A1EB41071DD4CE674BEF7FFDEB5FB7EF9D7FFDF5D737F9CF3FFFFC0167848F2B0FC5DFEC2436C409FD87E3F811F5BBE9031247780777DD7EFBED8DD3E0928CEA96555659A5DB65975D1A1FF2E5A5975EDA5D77DD758DEF6184DFE8AB57B4EB1DFD76CD35D774575D75558B713630A61ACFB8471C7144E31071C406F893DFE435BAAB779307533B93B7C6E5F3CF3FDF767CE19870776AC17EEF536BFBE0FEE5975F6E7128B67FF7BBDF351CEFBAEBAE0DDBDE934D7DCEAFF2FC3DF7DCD3FAE1ECF0CCCF70FBE73FFFB9AD1B88653A7B750EBEE45B36837D39F3C4134F6CFEC79DBE375672447019DEAF7D253DD519CF3EFB6CF7C8238F34BFF90E06E2D3AA7BADEF32AE63D816D7D2877CE4C163F886CEA79C724AF31D7D1C239EC9684D004FF33B1FDF76DB6D0D2F8E214BEACDD81846C3E5C9C7F12BDBE3D615575CB1F9FC6B5FFBDA00CB7EF35AEB50FC6427039FF13D99B20ED2AF9F6BDF93BACF38E6C053B0CAAF62132EE19BAFF9CC6FFC47279CCCC774A6AB98162BA983C4C3965B6ED96AB3AF7CE52B2D5725F785C37C971CE83D5FABE1B389F9D4A8F175F21F7BD1EF3FFFF94F9307D6F4A2E40ADFF5EBF8DAF7659DC5D87003B3B04A77988749B50B1CD28D7D1D63E75F1830177FF0D7269B6C324437F97D810516E8F6D8638F3616DBC1163D60577CA62E91E7D54BF3CD375FB3113B244FE25736AEFDA857E7879FC8C82F3807FEB396903582E1723CBDE129B8C5CF781BEE71145BC093F1F8998CB02DCEE00DCF8F37DE78833CBEE8A28B36BBF98D3D611FB7E171710343C617F3C6615B73E204B24D3BEDB46D2C750419719F1A7082092668DFCBAF59CFA19339F8C0F9E4C5D1FC41BEE4C2F07CD53D7CC967EA0DBCEC7C36B43FF0C003033E8327F1EE3BE3C9CF934E3A699307A671B6F9E07FCF3DF76CFDFA0F7EF08386E1D5575FBDF187DA908FE086DEE48ECCE6E137F6837FF6D6FF1A0F3EFD161C38863DF9DC9CFC4136F625371FE223F649EF5BF35D76BA9381EEE689AFE9C89EE2C87B38484D4FE7F4D87C8963E4FA65975DB65B72C9255B6DB0D24A2B751B6EB86177F9E597376C7A5D6DB5D5BAEF7EF7BBDD5C73CDD5FA74589753C82B47AFB3CE3A6DCCC9269BACC9BDDB6EBBB5FC2217A4E6377772C0B7BFFDEDA603D9F519EA03AFB8C977E1C9E85ED79C520F4777F6230B1FB01DDBC310CE810DF8CC2626C5895A8E9E3FFEF18FBB95575EB9ED7490FFC92547CC38E38CDD14534CD1F298F8A217BFE0107832172C850BD5906C2DF7AB81E84E2E7C438FDA2379CF26E288FDEDDED385BDC45ED66E6AEF9A7E006E92ABE0525CB3051CE16BBD16FCD9C61D77DCF60A0B871D7658C3346CABE37FF2939F347F921D16E699679EE667B63107BCD3C9EF625C8CD1DB6F38227CCF66F28CDA422CE1143511F9FCA6EE8C9DF4844B2DB554B32979E42663E1621825476A9DBA4E91FC0E1BE687CDE4AE3FFEF18F0D43B08AE7C4587A716B6CC69E73CE39BB8D37DEB8D5FF6BACB1468B733E4A5DB6C4124B74DFFBDEF71A66D4BAA9DBE80E43624C4C914B4EB76DB4D1468DFBF18363711B1C8B6FF6161B7A849A4FB216201FAB11C9C0B6702B4E5307D7FE267BAD8B1DAF2EE573763466EDC3BEFCE52F3779E96B57E7F2B9BE4E4FE3FC5FFCE217DDDC73CFDD2DB6D86203B98E3CF2C8E61372E37A7EC477C9C9F87DE699676EB2C202DCD2C139CE8517B622ABBC597B45F2894D63E3086B4F3824BA2727D635CED448623EF9560EE66B7AC3BB988BBFC36FC6A3B7B537716E6D976FC4051BCF32CB2C83F53618E66FD831160CD305A67105BBA88160487D009770C1CF78067EE5143E25AF7E2F714EAED447EA323AAB43ED7C07BFD1BDAE5FA7C68CEEC9F1B048AE6DB6D9A6D90D76E3F7CC27476DBAE9A60DA73FFDE94F9B3EE69363D8950FD535F10BD9E4289CCADF679C7146F39138E647B16B1EC7641D841EEC298FF037797D672CC7D7F581F09DF8803D7C679E071F7CB0C55BBD2655AFBFA4C6561BC20DBDF5A87C8AE352B7D8D4183676D173CB593FFFF9CF9B0EF029A69D230E2293DE1736BEF9CD6FB65ED0EF76739953CF60739D82FCC933E20AFF92CD77934F3E79F371D53931681D808E3810E6C983ABF80ECFA7260ED7679DDFF7B09E3529BDD476DB6DD7AEA5C04B5D63ABEBAEE68275F52A3F9A0B86C5193BD39BAC72809CEF35B6C3CB302C07B92EE058F92FEBCC741627EBADB75EB7F0C20B37BEFCFAD7BF3E24BF068BF2085DE84B776B2E7008F378048FA797AAB55D6A1BB1A29EE173BAE02AF58918C875A49A53D9C19CEC96DA83EEF80937A9D5E885E7E798638E96EBBEFAD5AF0ED6EBC9EEBB59679DB5F56A19938E6A81AC4DDB5CCB9247D5F9E1F46CF0C5AF72397DD502FCCEAE6A343504FEAEEBCEE987C51A9FE35ABC8253F852EFC0EFE24FCEE9FB5C2CF329F9CDAD07D1FFD0DF1A8438C06B6217AF91BBC6A61CB0F8E28BB76B1ED686B2898D451659A4E124F53BCE5C6185155ACD98CDDCE2807D933FE96B9D41BE496D2BA6E85EB11EBE8705B1A7C670AE35575C6BB75E42EEAC13C3587FCDD97A3B3B194BBE971770C1565B6DD56A00B83536FB6FBFFDF6CD66B1E332CB2CD3E2203E37F6F2CB2FDF30EEB7F4BC7862BAE9A66BEB95F810F72536E88417F09A1C03B3B8CE7BF953CC661D23B56CEA1ADCAE5E70AE3827339FC9393E8B417685E5E80DBB751D5ADF06A372A3F1F18E7C8FD7D4787C612CF1673EBE702D438D9B6B77199B6E6209EF85FFC8423EB5171F929F4EEA35B8C253F00D6FE6A3BF7CC0178EC195F51E95D4387E23B35A433D641E3C0737E485A5E4607649BC456658107330ADAF101F62496D643DD718F8873DE0403CF19BB9A79F7EFA360639EB7A7CED336112EFA5EEA767F5A5CFFA75B1662EF3F03B99C9C0D6A96BEA1A46D6DE8DAB7E701E7FC891F09F3539B9486C91875DA377F0AB7613A33FFCE10F5B7D62A3636A6371C3AEF897FEEA16754EB04F0F31610EB2988F7DF096FA4A8DC3EFB52FE747766217FE25BFBCBCFBEEBBB757BAF3299FA79EAD6BBDEC812B1C634DC55CCE53479B4B9CB2B598700CCCE246F354EE535F8A51794BBC4E38E184034C8871F31B03FFD39F2C6A2238D7F3E14ABDB27A4DAE493F26DEF8804FC9620D81DE7678602FBB3510B68275BE532F18031EC20B757D3298C2F1F283BC2E4FD9BDCFBABA1C874BF474308043F846AC58AF600371FBA31FFDA8E532FAE3F01AC362011E9DA3AE934F5DAFC6DF59FF52C7F1BBDCA89613BBCE218F9E8ADE643546D63683597E822D9894A7F890EE5963496E4F6D93B578B8812376CF1A125F934FBF693EDCC486E651CB051BC6D5B7A9F1D5EFF215FFCB45B5FEC21172E16CB3CDD6EA60BEA4B7FA810CF2239D8DADBE20BF39E45CBF995B1D209ECCC91730417678240BDDE517FAB39BF1D8ABAED5A77F8B1DD82F6B9474E66B31446776852DBF8B0D63B18FB171031E6723C7589F519FF1BDFC04079513E37F395D9DE2383EE503F2AB05F8DBB8FC0DF3D63EF81C2EF950FD1F8E32AEE3E1C5B174B6BE27A7902FD7C6C575CDEBF57A7B6A7931971C52AFE3E254BAD1113EC8C11FECAC7EC2A9B88B6DC9678D027FF37FFAD7AC3DDBC90C2772173C7CEB5BDF6A35B7DCE8FA1EBD71021CD32BEB0FE45367E145F2908DBF61C539D638F81D0ED9C2B17C18BCD7FB926A7D53EFCFA9F771E49A2E7BE49A0F3953BBF1113BB3030CAA6B9C27D7D21BC6717FFA8DFE969E900DC44BCE350ECEE13BB1284FD97DCEBABB3CA19626079BE138B9992FE085CDF82BD763FBBAD735EB7ADF5DEE69A273AE677B65F3AC83ABD7E84C7FDCA27FF58A6F71B5F3E1233650A7EB07A36FAD8F7D961B1C475E98165B70947B5BC4AD5CA7B7E46F5C8C1760441D8147D4A4FC2E16F026CC46F7FE3DBEFD6B74A97953FFE4FA5CAE059149DCAB27D836F51AFDF550F497D3727D966FF809EF88017D8DF53CB580CFF2215EC40DEA755C26168C9D354463F0B3B9C903EF6C2E4F582B533789F3E05D3FA31ED3EF3B27D7A62ACEFB7A57BFD76BD57C4E6FE7F37B70CFA7F8492D0177DEF3031CC21D7BE032EB3FEC852FDD43A716D09759A3F65E3DEF7B1CC81EF862A699666A36CC753CBEC7C5F28DBE5E8C9BDFF560F5279BA6BE664F6B2FE9DBEBBD05F5BE8DFE7DA1D13BEFD32BE41E88C441F2316CD197FEF4E50FAF38506DE8B39A296BD0F294FE346B7DD6D9D981DEFA36EBDA7E4FDDCC8FFC4667F8350EAE515BD1598CCB356C55FB027848EF5A73FA70F7D806E3F55EEDAC673B3F38817D364CAF4F86F07DF04F77BC476EF2B181B1C4BB1E484CE63A094CC3BB5E55BCD77BD0521BC8EF64C281380096CC0517E93DC44AEEC9C9FA39BD60940EB9669F384E6D53D7EBEBFD47F55E847AAFA2F15247AB9DE89B5A444D897B7CA6234CBA7FC5B9E953E920EFAA51E1D29CD6A183D9FE35073BF9D4BB7A1E7D817B7BF405E937BD573FE73E27AFE664DBE856EF27CE35F0FA5DF29CF738881FF8C4B5B4704DCEC141E4C7BD74250F3FE3BBE0DD679CA7278A2EE207FEE520B1437FFC451E3CDFBF866B53FFC19D5CA69784757A5BCFE27F1C8FEFD40D59C74AED927BE8728F68EE59A9F79AA6DEF75ECD996D9C71C619BCE231BFE310FE57E3E31DDFD3979FF1AE5EC27BF65007EB57E257BAF321FFCB43B9FF423E8301BAC57FE9156DF80EA6C4B2F5347D226EA733DCC31F2E108F6C2EDEC5281E4E4DDF7F1EA27F7F78BEABB5686289FC390EEE8DAD1E556B5A2312E359AB2027FF880DBD4D6A187ED65FC24B7A263B1CA85DC8C676E68C0FD9824DD53C30C8CF745747C33BDDD95F4CE873FD463E3AEBBDF403FDFB55EAB309F5FE70BFFB6CCDAAC61F59E03DBC67774CAECBB1BD98C7FBE2802DC4061E6637FAB38DBE400D20CE7117DE1017F2A1CFE4A163F5BB1854A7AA0FC438FD60C47C38407F6CFD85EED6DBC451EE3D8083FE7DF8C3C53B7B0D775FAF1DBEBC8AFDF020BFF32FFCF2177DC94447F2E11B3D5B6A39785227C805B0A1461363B94E61E74363673DDBA6F6496EA41B59C495BA22F7F5C9A7B8449D2727464EB6CABA50705DD72E6BBD131E4C7C842BACDB2637F82EB9539DC6CE30977A07CFE321F19CFB508261F8551BB38DE39217F1A37CE13C3C2A76D80C66ACDF1A0BCED99A6D1D8B5B6185CFC5843506B6CFFD66E476FD24F9ABFF9CDB88F69AE71CAFF6082FD6DA575DC616EA48B6270F4EC6C5721C4CC8D7B96E268EE826CEF92F7D08ECAA15E80E43740D47AA558DAD5F132F30631EDFB3394ED34F8A1BFCCFB67C08BBFAE5FADCC1FFD27BB83ADF9A64FA81D400EA95ACF5ABBFC8ABDE231B39AD5D3AB75E474A0C93D339F0AE3EA3BFE371881E56FD94E38D01E3EC0327F805BFD239D777B3D606F3B09FE7E0AC71D7DA7DB867F0FA7BF09D78E02331E4337CC9A77A54F5ADE3D377E16C3C9EB549B9875CB97E58EF2DB7C6850F734F234EC641F283EB783658B06E804BE4523AEB17ECBE1337B8D571B01099E05E5F0983F57ED4CFEBF3FA0C97EBAD7AA46CF23C1CC2756CEABAA73E4F0EC73FF049369CEB5EDCE136365143A9EB718AB58F5CEBF69B73D991DF7180F152D78A6D7544EDE5F4087202ACC04CD662FACF6C7ED65EEFD1B0E7D9086B73891B5B7AC37A2F36BCE19D5CC797CFD8B0FABDE6CF7ACFA135D0D4C0F2082E73ED87FFC4058E94E3C5075BA5C6F3CAF77281D830A6D7FACC5B7D46E2B3F63C57906779D4547018DEB789B7D832FD9F63E90FBFE20006C4A33C2EE725F6FBFD476AC8D8068EE1489EC83DEB7C8F47F85E6EE77379C56F70001FB0C0DFB8A8E6B470F7E7C17DD6378211B6F5AA568A6CE9FD724E9EFDCC7A89DA129FC300DFE32FBDBC6BAFE955F35C1E3FA70E105FEC2466CC03E37C0843B84D1E106BEAA9DCE3CCBEB8856D8C171FE59A54FFF9EAFFA57BCD73726A6455CB073FE191D405B119FBE22DDFF31F2E53C7E260F147D6D4EEC9FDEC216F9B37D766E8237FA9FBAD4B580752FFDABDB7FB8D7DF1A698B7B6557D11DDFF1FAEABF1A1AE986AAAA9863C27DD7FC66F38BEA0271EB77E437FEB8F6A81ACCFFA2C8661566FA7B68411752E5DE50D351D0E91B7E500BB7ACA67FAC252EE2533169E1F6E5DAEFFDCC488F6CA8DC6D48FA953C2699F47F7FA6C070C908FBCB92F97AFE89EFBD1F932F719B18FF91C4BCF5C574C0F8A53B2BE223EE0CB1CEA46B8FC22BAF79FCBD68FF6EFC1FFACF1EBB590FA0C33F9C8AD56C83DE8E967D50D7CADEEC3F16245FDA31EAFCF36D56764FBEB5179A6F98BEADE7F963B73D5FF3B186EDDB37FDDB3FF4C22DFF1171BF0699EA9C9CE167244F09CEB2BFD39EBF39B39866DFFDFDA75B8BAAEAE6FF69F23EFCB51F5ADBEAEC7D5EB21C907C6A503CCB283352D31601D428CE45EE07A0DBDFF8CE788FE87E38BEC15F3FDFF6B18D1FF4CF4FF8F6244FF4B519FC9CBBD3F79D6052662937ABF44FF39F7FADF20F539F41A0BFD793F8FDE1937B9ABFE2F48626F38DDAB5CC3E95FEDDA9727DC98FBDFFAF7BFD6B16BED91D8ACFF67F14574EFF73C95DF3FCBEFB5FFA99FFBCF6E04F7C3FDEF4B7DD6E3B3B863B8FF21A9B13922DDFF0BE9F7E53E]
}
Add(DoData,5940300,686,833)
{
link(onEventData,5087991:doWork3,[(751,839)])
link(Data,7896929:Bitmap,[])
}
Add(HubEx,5087991,747,721)
{
Angle=3
link(onEvent,12671456:doWork3,[])
}
Add(If_else,7883439,336,826)
{
Op2=String(mp3)
link(onTrue,7571773:doTimer,[])
AddHint(-77,9,45,13,Op2)
}
Add(Timer,7571773,413,826)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,821246:doEvent1,[])
}
Add(MediaPlayer,9660870,581,826)
{
link(FileName,15344455:getVar,[])
}
Add(LineBreakEx,15344455,581,798)
{
Caption="BooM!"
Type=2
}
Add(Timer,9815282,630,833)
{
Interval=125
Enable=1
AutoStop=1
link(onTimer,5940300:doData,[])
}
Add(Hub,821246,469,826)
{
OutCount=3
link(onEvent1,9660870:doPlay,[])
link(onEvent2,9815282:doTimer,[])
link(onEvent3,10330071:In,[])
}
Add(LineBreakEx,5385402,455,658)
{
Caption="Пиу-Пиу!"
Type=1
link(OnEvent,15611918:doEvent1,[])
}
Add(LineBreakEx,11116539,511,763)
{
Caption="Пиу-Пиу!"
}
Add(Hub,15611918,539,658)
{
link(onEvent1,5632994:doWork2,[])
link(onEvent2,10116282:In,[])
}
Add(LineBreak,3037468,609,679)
{
link(Out,5632994:doWork3,[(648,685)])
Primary=[10330071,-105,161]
}
Add(HubEx,5632994,644,658)
{
link(onEvent,10128974:doStop,[])
}
Add(LineBreak,1405564,532,833)
{
link(Out,9660870:doStop,[])
Primary=[10116282,35,-168]
}
Add(Label,1961152,749,196)
{
Left=5
Top=205
Width=350
AutoSize=1
Alignment=2
}