Forums
New posts
Articles
Product Reviews
Policies
FAQ
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Menu
Log in
Register
Install the app
Install
Forums
Apple Computing Products:
Running Windows on your Mac
WaitNextEvent method giving me the problem!!
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="skiran" data-source="post: 7547"><p>I am using Apple Event Mechanism.. Whenever some action occurs on the client side I launch the server application and then send the event to that aplication..</p><p></p><p>As Mac OS classic uses cooperative scheduling, after launching the application, I am calling WaitNextEvent method.. But the event is being sent before the application is being launched.. I am using FlushEvents method just after launching the application.. Eventhen I am facing the same problem.. </p><p></p><p>I am putting the code below.. Can anybody help me on this??</p><p></p><p>ProcessSerialNumber psn;</p><p> OSStatus i, err;</p><p> AppleEvent event = { typeNull, 0 };</p><p> AppleEvent reply = { typeNull, 0 };</p><p> AEAddressDesc target = { typeNull, 0 };</p><p> AEDescList creator_list = { typeNull, 0 };</p><p> AEDescList extension_list = { typeNull, 0 };</p><p> AEIdleUPP MyIdleUPP;</p><p>#if 0 // pick one</p><p> err = LaunchDocuBOMJavaLinkX();</p><p>#else</p><p> EventRecord event1;</p><p> err = LaunchDocuBOMJavaLinkClassic();</p><p> FlushEvents(everyEvent,0);</p><p> WaitNextEvent(autoKeyMask,&event1,1200,NULL);</p><p>#endif</p><p> </p><p> if ( ! err ) err = ProcessUtils::FindProcessBySignature( kDocuBOMCreatorCode, psn );</p><p> </p><p> if ( ! err ) err = AECreateDesc( typeProcessSerialNumber, &psn, sizeof(psn), &target );</p><p> </p><p> if ( ! err ) err = AECreateAppleEvent( kAEDocuBOMEventClass, kAECheckOut, &target, kAutoGenerateReturnID, kAnyTransactionID, &event );</p><p></p><p> if ( ! err && ( inArrayOfCreatorCodesToOpen || inArrayOfFilenameExtensionsToOpen ) ) {</p><p> if ( inArrayOfCreatorCodesToOpen ) {</p><p> err = AECreateList( nil, 0, false, &creator_list );</p><p> for ( i = 0; ! err && inArrayOfCreatorCodesToOpen[ i ]; ++i ) {</p><p> err = AEPutPtr( &creator_list, 0, typeType, &inArrayOfCreatorCodesToOpen[ i ], sizeof(OSType) );</p><p> }</p><p> }</p><p> if ( inArrayOfFilenameExtensionsToOpen) {</p><p> err = AECreateList( nil, 0, false, &extension_list );</p><p> for ( i = 0; ! err && inArrayOfFilenameExtensionsToOpen[ i ]; ++i ) {</p><p> err = AEPutPtr( &extension_list, 0, typeChar, inArrayOfFilenameExtensionsToOpen[ i ], long(strlen( inArrayOfFilenameExtensionsToOpen[ i ] ) + 1) );</p><p> }</p><p> }</p><p> }</p><p> if ( ! err && creator_list.descriptorType != typeNull ) err = AEPutParamDesc( &event, keyCreatorCodeList, &creator_list );</p><p> if ( ! err && extension_list.descriptorType != typeNull ) err = AEPutParamDesc( &event, keyFilenameExtensionList, &extension_list );</p><p></p><p> if ( ! err ) err = GetCurrentProcess( &psn );</p><p> if ( ! err ) err = AEPutParamPtr( &event, keyDirectObject, typeProcessSerialNumber, &psn, sizeof(ProcessSerialNumber) );</p><p> </p><p> MyIdleUPP= NewAEIdleUPP(MyAEIdleCallback);</p><p> if ( ! err ) err = AESend( &event, &reply, kAEWaitReply, kAEHighPriority, kNoTimeOut, MyIdleUPP, nil ); </p><p> </p><p> AEDisposeDesc( &extension_list );</p><p> AEDisposeDesc( &creator_list );</p><p> AEDisposeDesc( &target );</p><p> AEDisposeDesc( &event );</p><p> AEDisposeDesc( &reply );</p><p> </p><p> return err;</p></blockquote><p></p>
[QUOTE="skiran, post: 7547"] I am using Apple Event Mechanism.. Whenever some action occurs on the client side I launch the server application and then send the event to that aplication.. As Mac OS classic uses cooperative scheduling, after launching the application, I am calling WaitNextEvent method.. But the event is being sent before the application is being launched.. I am using FlushEvents method just after launching the application.. Eventhen I am facing the same problem.. I am putting the code below.. Can anybody help me on this?? ProcessSerialNumber psn; OSStatus i, err; AppleEvent event = { typeNull, 0 }; AppleEvent reply = { typeNull, 0 }; AEAddressDesc target = { typeNull, 0 }; AEDescList creator_list = { typeNull, 0 }; AEDescList extension_list = { typeNull, 0 }; AEIdleUPP MyIdleUPP; #if 0 // pick one err = LaunchDocuBOMJavaLinkX(); #else EventRecord event1; err = LaunchDocuBOMJavaLinkClassic(); FlushEvents(everyEvent,0); WaitNextEvent(autoKeyMask,&event1,1200,NULL); #endif if ( ! err ) err = ProcessUtils::FindProcessBySignature( kDocuBOMCreatorCode, psn ); if ( ! err ) err = AECreateDesc( typeProcessSerialNumber, &psn, sizeof(psn), &target ); if ( ! err ) err = AECreateAppleEvent( kAEDocuBOMEventClass, kAECheckOut, &target, kAutoGenerateReturnID, kAnyTransactionID, &event ); if ( ! err && ( inArrayOfCreatorCodesToOpen || inArrayOfFilenameExtensionsToOpen ) ) { if ( inArrayOfCreatorCodesToOpen ) { err = AECreateList( nil, 0, false, &creator_list ); for ( i = 0; ! err && inArrayOfCreatorCodesToOpen[ i ]; ++i ) { err = AEPutPtr( &creator_list, 0, typeType, &inArrayOfCreatorCodesToOpen[ i ], sizeof(OSType) ); } } if ( inArrayOfFilenameExtensionsToOpen) { err = AECreateList( nil, 0, false, &extension_list ); for ( i = 0; ! err && inArrayOfFilenameExtensionsToOpen[ i ]; ++i ) { err = AEPutPtr( &extension_list, 0, typeChar, inArrayOfFilenameExtensionsToOpen[ i ], long(strlen( inArrayOfFilenameExtensionsToOpen[ i ] ) + 1) ); } } } if ( ! err && creator_list.descriptorType != typeNull ) err = AEPutParamDesc( &event, keyCreatorCodeList, &creator_list ); if ( ! err && extension_list.descriptorType != typeNull ) err = AEPutParamDesc( &event, keyFilenameExtensionList, &extension_list ); if ( ! err ) err = GetCurrentProcess( &psn ); if ( ! err ) err = AEPutParamPtr( &event, keyDirectObject, typeProcessSerialNumber, &psn, sizeof(ProcessSerialNumber) ); MyIdleUPP= NewAEIdleUPP(MyAEIdleCallback); if ( ! err ) err = AESend( &event, &reply, kAEWaitReply, kAEHighPriority, kNoTimeOut, MyIdleUPP, nil ); AEDisposeDesc( &extension_list ); AEDisposeDesc( &creator_list ); AEDisposeDesc( &target ); AEDisposeDesc( &event ); AEDisposeDesc( &reply ); return err; [/QUOTE]
Verification
Name this item 🌈
Post reply
Forums
Apple Computing Products:
Running Windows on your Mac
WaitNextEvent method giving me the problem!!
Top