WM_COPYDATA problem
6 отговора
123 прегледа
WM_COPYDATA problem
Slojil sum kuka na mishkata(LMouseDown) i pri dadeni usloviq si izprashtam WM_COPYDATA na programata mi sus nujnata informaciq. Problema e, che suobshtenieto stiga do glavniq mi prozorec samo, ako LMouseDown e izvursheno vuv moq prozorec. Nqkoi da ima ideq zashto ne se izprashta suobshtenieto?
by Wise Guy
[email protected]
by Wise Guy
[email protected]
Re: WM_COPYDATA problem
С какво пращаш съобщението - със SendMessage() ли?
Щото с PostMessage() няма да стигне.
Щото с PostMessage() няма да стигне.
Re: WM_COPYDATA problem
Izpolzvam SendMessage estestveno... Chetoh MSDN i ne namerih nishto, koeto da opisva takuv problem
Znachi kukata si prihvashta LMouseDown i izprashta WM_COPYDATA vinagi, no moq prozorec go poluchava samo, ako toi e aktiven (mai)
Napravih si otdelno prilojenie za testvane (na Delphi). Kato se click-va v/u komponentite ot moq prozorec vuv Caption-a se izpisva Handle na komponenta. Ako subitieto e izvun nego nqma promqna t.e. ne se poluchava suobshtenieto. Eto go proekta: [линк]
by Wise Guy
[email protected]
Znachi kukata si prihvashta LMouseDown i izprashta WM_COPYDATA vinagi, no moq prozorec go poluchava samo, ako toi e aktiven (mai)
Napravih si otdelno prilojenie za testvane (na Delphi). Kato se click-va v/u komponentite ot moq prozorec vuv Caption-a se izpisva Handle na komponenta. Ako subitieto e izvun nego nqma promqna t.e. ne se poluchava suobshtenieto. Eto go proekta: [линк]
by Wise Guy
[email protected]
Редактирано от Wise Guy на
Re: WM_COPYDATA problem
Какво значи че "go poluchava samo, ako toi e aktiven (MAI)" ?
Не си ли сигурен? Сложи си некакъв печат (във файл например) на входа на Windows message function, която трябва да получи това съобщение (не знам на Делфи как се прави :()
SendMessage() все пак праща в опашката съобщения за прозореца. Да не би твоят процес да е зает в тоя момент и да не обработва опашката?
Опитай нещо друго. Направи си собствено съобщение, например WM_USER + 2345, и прати от hook-a това съобщение, и провери дали ти идва когато трябва. Ако така стане (при мене става), можеш лесно да симулираш WM_COPYDATA с това като пращаш в цикъл последователно данните като байтове или думи. Преди време имах сходен (не същия) проблем с WM_COPYDATA, и така го реших - грубо, но бачка. А и можеш да пращаш данните и чрез PostMessage().
Не си ли сигурен? Сложи си некакъв печат (във файл например) на входа на Windows message function, която трябва да получи това съобщение (не знам на Делфи как се прави :()
SendMessage() все пак праща в опашката съобщения за прозореца. Да не би твоят процес да е зает в тоя момент и да не обработва опашката?
Опитай нещо друго. Направи си собствено съобщение, например WM_USER + 2345, и прати от hook-a това съобщение, и провери дали ти идва когато трябва. Ако така стане (при мене става), можеш лесно да симулираш WM_COPYDATA с това като пращаш в цикъл последователно данните като байтове или думи. Преди време имах сходен (не същия) проблем с WM_COPYDATA, и така го реших - грубо, но бачка. А и можеш да пращаш данните и чрез PostMessage().
Re: WM_COPYDATA problem
Da be vqrno, bqh go zabravil tova. Shte si napravq sobsveno suobshtenie. To na men mi trqbva da izpratq samo edin Handle na prozorec.
No problema si ostava. Sq polzvam PostMessage (WM_SENDHANDLE = WM_USER + 2345). Slojih beep vuv kukata i toi mi kazva che suobshtenieto se izprashta. Obache sq probvah sus MessageBox i mi pokazva che Handle-a za moq prozorec e 0. Qvno neshto sum oburkal i zatova suobshtenieto ne se izprashta na moq prozorec. Sega shte si go opravq.
10x vse pak za WM_USER + 2345 (da ne se mucha sus strukturite)
by Wise Guy
[email protected]
No problema si ostava. Sq polzvam PostMessage (WM_SENDHANDLE = WM_USER + 2345). Slojih beep vuv kukata i toi mi kazva che suobshtenieto se izprashta. Obache sq probvah sus MessageBox i mi pokazva che Handle-a za moq prozorec e 0. Qvno neshto sum oburkal i zatova suobshtenieto ne se izprashta na moq prozorec. Sega shte si go opravq.
10x vse pak za WM_USER + 2345 (da ne se mucha sus strukturite)
by Wise Guy
[email protected]
Re: WM_COPYDATA problem
Все пак 2345 е измислено. Виж дали не конфликтира с некое друго съобщение и си измисли друго. Някъде имаше карта с разрешените съобщения.
Re: WM_COPYDATA problem
Ne, vurnah se na varianta sus WM_COPYDATA, no pozlvam WParam (koito e za Handle na izprashtashtiq prozorec)
Moje da se napravi i s WM_APP+n
by Wise Guy
[email protected]
Moje da se napravi i s WM_APP+n
by Wise Guy
[email protected]