HRESULT DDEService::_RegisterDDE() { HRESULT hr = E_FAIL; m_hszProgman = DdeCreateStringHandle(m_dwDDEInst, _T("PROGMAN"), DDE_CP); if (m_hszProgman != 0L) { m_hszGroups = DdeCreateStringHandle(m_dwDDEInst, _T("Groups"), DDE_CP); if (m_hszGroups != 0L) { m_hszFolders = DdeCreateStringHandle(m_dwDDEInst, _T("Folders"), DDE_CP); if (m_hszFolders != 0L) { m_hszAppProperties = DdeCreateStringHandle(m_dwDDEInst, _T("AppProperties"), DDE_CP); if (m_hszAppProperties != 0L) { if (DdeNameService(m_dwDDEInst, m_hszProgman, 0L, DNS_REGISTER) != 0L) { if (DdeNameService(m_dwDDEInst, m_hszFolders, 0L, DNS_REGISTER) != 0L) { hr = S_OK; } } } } } } return hr; }
void dde_enable_server(BOOL enable) { if (enable && !server_enabled) { server_enabled = TRUE; DdeNameService(idInst, hszService, NULL, DNS_REGISTER); } else if (!enable && server_enabled) { server_enabled = FALSE; DdeNameService(idInst, hszService, NULL, DNS_UNREGISTER); } }
void WdeDDEEnd( void ) { if( IdInst != 0 ) { DdeNameService( IdInst, (HSZ)NULL, (HSZ)NULL, DNS_UNREGISTER ); if( hDataItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDataItem ); } if( hNameItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hNameItem ); } if( hFileItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hFileItem ); } if( hIs32BitItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hIs32BitItem ); } if( hDialogTopic != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDialogTopic ); } if( hDialogService != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDialogService ); } DdeUninitialize( IdInst ); IdInst = 0; } if( DdeProc != (FARPROC)NULL ) { FreeProcInstance( DdeProc ); } }
void DDEService::_DoStop() { DdeNameService(m_dwDDEInst, 0L, 0L, DNS_UNREGISTER); if (m_hszProgman) { DdeFreeStringHandle(m_dwDDEInst, m_hszProgman); } if (m_hszGroups) { DdeFreeStringHandle(m_dwDDEInst, m_hszGroups); } if (m_hszFolders) { DdeFreeStringHandle(m_dwDDEInst, m_hszFolders); } if (m_hszAppProperties) { DdeFreeStringHandle(m_dwDDEInst, m_hszAppProperties); } DdeUninitialize(m_dwDDEInst); m_dwDDEInst = 0; CoUninitialize(); }
/* * IEDDEEnd */ void IEDDEEnd( void ) { int i; if( IdInst != 0 ) { DdeNameService( IdInst, (HSZ)NULL, (HSZ)NULL, DNS_UNREGISTER ); if( hDataItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDataItem ); } if( hNameItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hNameItem ); } if( hFileItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hFileItem ); } for( i = 0; i < NUM_FORMATS; i++ ) { if( IEServices[i].hservice != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, IEServices[i].hservice ); } if( IEServices[i].htopic != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, IEServices[i].htopic ); } } DdeUninitialize( IdInst ); IdInst = 0; } if( DdeProc != (FARPROC)NULL ) { FreeProcInstance( DdeProc ); } } /* IEDDEEnd */
/************************************************************************* * ShellDDEInit (SHELL32.@) * * Registers the Shell DDE services with the system so that applications * can use them. * * PARAMS * bInit [I] TRUE to initialize the services, FALSE to uninitialize. * * RETURNS * Nothing. */ EXTERN_C void WINAPI ShellDDEInit(BOOL bInit) { TRACE("ShellDDEInit bInit = %s\n", bInit ? "TRUE" : "FALSE"); if (bInit && !bInitialized) { DdeInitializeW(&dwDDEInst, DdeCallback, CBF_FAIL_ADVISES | CBF_FAIL_POKES, 0); hszProgmanTopic = DdeCreateStringHandleW(dwDDEInst, L"Progman", CP_WINUNICODE); hszProgmanService = DdeCreateStringHandleW(dwDDEInst, L"Progman", CP_WINUNICODE); hszShell = DdeCreateStringHandleW(dwDDEInst, L"Shell", CP_WINUNICODE); hszAppProperties = DdeCreateStringHandleW(dwDDEInst, L"AppProperties", CP_WINUNICODE); hszFolders = DdeCreateStringHandleW(dwDDEInst, L"Folders", CP_WINUNICODE); if (hszProgmanTopic && hszProgmanService && hszShell && hszAppProperties && hszFolders && DdeNameService(dwDDEInst, hszFolders, 0, DNS_REGISTER) && DdeNameService(dwDDEInst, hszProgmanService, 0, DNS_REGISTER) && DdeNameService(dwDDEInst, hszShell, 0, DNS_REGISTER)) { bInitialized = TRUE; } } else if (!bInit && bInitialized) { /* unregister all services */ DdeNameService(dwDDEInst, 0, 0, DNS_UNREGISTER); if (hszFolders) DdeFreeStringHandle(dwDDEInst, hszFolders); if (hszAppProperties) DdeFreeStringHandle(dwDDEInst, hszAppProperties); if (hszShell) DdeFreeStringHandle(dwDDEInst, hszShell); if (hszProgmanService) DdeFreeStringHandle(dwDDEInst, hszProgmanService); if (hszProgmanTopic) DdeFreeStringHandle(dwDDEInst, hszProgmanTopic); DdeUninitialize(dwDDEInst); bInitialized = FALSE; } }
/************************************************************************* * ShellDDEInit (SHELL32.@) * * Registers the Shell DDE services with the system so that applications * can use them. * * PARAMS * bInit [I] TRUE to initialize the services, FALSE to uninitalize. * * RETURNS * Nothing. */ void WINAPI ShellDDEInit(BOOL bInit) { TRACE("bInit = %s\n", bInit ? "TRUE" : "FALSE"); if (bInit) { static const WCHAR wszProgman[] = {'P','r','o','g','m','a','n',0}; static const WCHAR wszAsterisk[] = {'*',0}; static const WCHAR wszShell[] = {'S','h','e','l','l',0}; static const WCHAR wszAppProperties[] = {'A','p','p','P','r','o','p','e','r','t','i','e','s',0}; static const WCHAR wszFolders[] = {'F','o','l','d','e','r','s',0}; static const WCHAR wszGroups[] = {'G','r','o','u','p','s',0}; DdeInitializeW(&dwDDEInst, DdeCallback, CBF_FAIL_ADVISES | CBF_FAIL_POKES, 0); hszProgmanTopic = DdeCreateStringHandleW(dwDDEInst, wszProgman, CP_WINUNICODE); hszProgmanService = DdeCreateStringHandleW(dwDDEInst, wszProgman, CP_WINUNICODE); hszAsterisk = DdeCreateStringHandleW(dwDDEInst, wszAsterisk, CP_WINUNICODE); hszShell = DdeCreateStringHandleW(dwDDEInst, wszShell, CP_WINUNICODE); hszAppProperties = DdeCreateStringHandleW(dwDDEInst, wszAppProperties, CP_WINUNICODE); hszFolders = DdeCreateStringHandleW(dwDDEInst, wszFolders, CP_WINUNICODE); hszGroups = DdeCreateStringHandleW(dwDDEInst, wszGroups, CP_WINUNICODE); DdeNameService(dwDDEInst, hszFolders, 0, DNS_REGISTER); DdeNameService(dwDDEInst, hszProgmanService, 0, DNS_REGISTER); DdeNameService(dwDDEInst, hszShell, 0, DNS_REGISTER); } else { /* unregister all services */ DdeNameService(dwDDEInst, 0, 0, DNS_UNREGISTER); DdeFreeStringHandle(dwDDEInst, hszFolders); DdeFreeStringHandle(dwDDEInst, hszAppProperties); DdeFreeStringHandle(dwDDEInst, hszShell); DdeFreeStringHandle(dwDDEInst, hszAsterisk); DdeFreeStringHandle(dwDDEInst, hszProgmanService); DdeFreeStringHandle(dwDDEInst, hszProgmanTopic); DdeUninitialize(dwDDEInst); } }
void CDDEServer::Close() { if ( m_hInstance == NULL ) return; DdeNameService( m_hInstance, m_hszService, NULL, DNS_UNREGISTER ); DdeFreeStringHandle( m_hInstance, m_hszService ); DdeUninitialize( m_hInstance ); m_hInstance = NULL; }
CDDEServer::~CDDEServer(void) { if (service_name != "") { HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (const char *)service_name, CP_WINANSI); if (DdeNameService(DDEIdInst, serviceName, NULL, DNS_UNREGISTER) == 0) { DDEPrintError(); } } }
JNIEXPORT jboolean JNICALL Java_com_google_code_jdde_ddeml_DdeAPI_NameService (JNIEnv *env, jclass cls, jint idInst, jstring jhsz1, jint afCmd) { HSZ hsz1 = UtilCreateStringHandle(env, idInst, jhsz1); HDDEDATA data = DdeNameService(idInst, hsz1, 0L, afCmd); UtilFreeStringHandle(idInst, hsz1); return data != NULL; }
void FAR ExitDDE (void) { if (ddeInstalled) { if (DdeNameService(ddeInstId,hService,0,DNS_UNREGISTER)) { DdeFreeStringHandle(ddeInstId,hService); DdeFreeStringHandle(ddeInstId,hTopic); DdeUninitialize(ddeInstId); } ddeInstalled=FALSE; } FreeProcInstance(ddeProc); }
BOOL CDDEServer::Create(const CString& server_name) { service_name = server_name; HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (const char *)server_name, CP_WINANSI); if (DdeNameService(DDEIdInst, serviceName, NULL, DNS_REGISTER) == 0) { DDEPrintError(); return FALSE; } return TRUE; }
/* * DDEFini - clean up dde related things */ void DDEFini( void ) { if( !UseDDE ) { return; } if( ServerCount > 0 ) { DdeNameService( DDEInstId, 0, 0, DNS_UNREGISTER ); } freeAllStringHandles(); DdeUninitialize( DDEInstId ); UseDDE = FALSE; } /* DDEFini */
void ShutDownDDE ( void ) { extern HSZ hszService, hszItem, hszComplete, hszBatch, hszLoad; extern HCONV hConvApp; /* What does this do? -- Apparently Unused */ extern DWORD idInst; if ( hConvApp != NULL) { DdeDisconnect ( hConvApp ); hConvApp = NULL; } DdeNameService (idInst, hszService, (HSZ)NULL, DNS_UNREGISTER ); DdeFreeStringHandle ( idInst, hszService ); DdeFreeStringHandle ( idInst, hszCommand ); DdeFreeStringHandle ( idInst, hszResult ); }
word pl_dde_register_service(term_t topic, term_t onoff) { HSZ t; int a; TRY(dde_initialise()); if ( !get_hsz(topic, &t) ) fail; if ( !PL_get_bool(onoff, &a) ) return PL_error(NULL, 0, NULL, ERR_TYPE, ATOM_bool, onoff); if ( !a ) { int rval = (int)DdeNameService(ddeInst, t, 0L, DNS_UNREGISTER); DdeFreeStringHandle(ddeInst, t); return rval ? TRUE : FALSE; } else { if ( DdeNameService(ddeInst, t, 0L, DNS_REGISTER|DNS_FILTERON) ) succeed; /* should we free too? */ DdeFreeStringHandle(ddeInst, t); return dde_warning("register_request"); } }
BOOL CDDEServer::Create() { USES_CONVERSION; DWORD dwFilterFlags = 0; UINT uiResult; uiResult = DdeInitialize( &m_hInstance, DDECallback, dwFilterFlags, 0 ); if ( uiResult != DMLERR_NO_ERROR ) return FALSE; m_hszService = DdeCreateStringHandle( m_hInstance, (LPCTSTR)m_sService, CP_WINUNICODE ); DdeNameService( m_hInstance, m_hszService, NULL, DNS_REGISTER ); return TRUE; }
void FAR InitDDE (HWND powinstance) { ddeProc=MakeProcInstance((FARPROC)PowDdeServerProc,hInst); ddeInstId=0; // use window handle as topic to make it possible // to call specific instances of pow! wsprintf((LPSTR)topic,"%04X",powinstance); if (DdeInitialize((LPDWORD)&ddeInstId,(PFNCALLBACK)ddeProc,APPCLASS_STANDARD,0)==DMLERR_NO_ERROR) { ddeInstalled=TRUE; hService=DdeCreateStringHandle(ddeInstId,"pow",CP_WINANSI); hTopic=DdeCreateStringHandle(ddeInstId,(LPSTR)topic,CP_WINANSI); DdeNameService(ddeInstId,hService,0,DNS_REGISTER); } }
bool gcDDEServer::create(const char* name) { Safe::strcpy(&m_szName, name, 255); HSZ hsz = GetDDEManager()->atomFromString(m_szName); if ( !hsz ) return false; bool success = (DdeNameService(GetDDEManager()->getDDEInst(), hsz, (HSZ) nullptr, DNS_REGISTER) != nullptr); if (!success) { printf("Failed to register DDE server '%s'\n", m_szName); } return success; }
void WREDDEEnd( void ) { int i; if( IdInst != 0 ) { DdeNameService( IdInst, (HSZ)NULL, (HSZ)NULL, DNS_UNREGISTER ); for( i = 0; i < NUM_TOPICS; i++ ) { if( Topics[i].htopic != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, Topics[i].htopic ); } } for( i = 0; i < NUM_SERVERS; i++ ) { if( EditServers[i].htopic != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, EditServers[i].htopic ); } if( EditServers[i].hservice != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, EditServers[i].hservice ); } } if( hDialogDump != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDialogDump ); } if( hImageDump != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hImageDump ); } if( hFileItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hFileItem ); } if( hIs32BitItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hIs32BitItem ); } if( hDataItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hDataItem ); } if( hNameItem != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hNameItem ); } if( hServiceName != (HSZ)NULL ) { DdeFreeStringHandle( IdInst, hServiceName ); } DdeUninitialize( IdInst ); } if( DdeProc != (FARPROC)NULL ) { FreeProcInstance( DdeProc ); } }
BOOL StartUpDDE(void) { if (DdeInitialize(&idInst, (PFNCALLBACK) DDECallBack, APPCLASS_STANDARD, 0) != DMLERR_NO_ERROR) { return(FALSE); } hszService = DdeCreateStringHandle(idInst,"CLIPS",CP_WINANSI ); hszCommand = DdeCreateStringHandle(idInst,"COMMAND",CP_WINANSI ); hszResult = DdeCreateStringHandle(idInst,"RESULT",CP_WINANSI ); if (! DdeNameService(idInst,hszService,0L,DNS_REGISTER)) { return(FALSE); } return(TRUE); }
WEXPORT WServer::~WServer() { /***************************/ if( _server != NULL ) { if( DdeNameService( _procid, _service, 0, DNS_UNREGISTER ) ) { } DdeFreeStringHandle( _procid, _service ); DdeFreeStringHandle( _procid, _topic ); DdeUninitialize( _procid ); _procid = NULL; #if !defined(__NT__) FreeProcInstance( _procInst ); #endif _service = NULL; _topic = NULL; _server = NULL; } }
bool XAP_Win32Slurp::connectSlurper(void) { if (m_bInitialized) // only do this once !! return false; // Register us with the DDE Management Library (DDEML). m_idDdeServerInst = 0; UINT nDdeRtnStatus = DdeInitializeW(&m_idDdeServerInst, (PFNCALLBACK)&s_DdeServerCallback, ( APPCMD_FILTERINITS | CBF_SKIP_CONNECT_CONFIRMS | CBF_FAIL_SELFCONNECTIONS | CBF_FAIL_POKES), 0); if (nDdeRtnStatus != DMLERR_NO_ERROR) { UT_DEBUGMSG(("Unable to initialize DDEML [%d]\n",nDdeRtnStatus)); return false; } // create two registered strings. // the "ServerName" must match the value in the registry under the key: // HKEY_CLASSES_ROOT\<xxx>\shell\open\ddeexec\application // // the "TopicName" must match the value in the key: // HKEY_CLASSES_ROOT\<xxx>\shell\open\ddeexec\topic m_hszServerName = DdeCreateStringHandleW(m_idDdeServerInst, L"Abiword"/*const_cast<char *>(m_pApp->getApplicationName())*/, CP_WINUNICODE); m_hszTopic = DdeCreateStringHandleW(m_idDdeServerInst, MY_DDE_TOPICNAME, CP_WINUNICODE); // register the server Name HDDEDATA bRegistered = DdeNameService(m_idDdeServerInst, m_hszServerName, NULL, DNS_REGISTER); if (!bRegistered) { UT_DEBUGMSG(("Unable to register NameService with DDEML.\n")); return false; } m_bInitialized = true; return true; }
bool DDE::RegisterDDE() { // Startup DDE library UINT result = DdeInitialize(&g_pidInst, (PFNCALLBACK) &DdeCallback, 0, 0); if(result != DMLERR_NO_ERROR) { Log::Error("Unable to initialize DDE: %d", result); return false; } // Check for app/topic override char* appName = iniparser_getstr(g_ini, DDE_SERVER_NAME); char* topic = iniparser_getstr(g_ini, DDE_TOPIC); g_serverName = DdeCreateStringHandle(g_pidInst, appName == NULL ? "WinRun4J" : appName, CP_WINANSI); g_topic = DdeCreateStringHandle(g_pidInst, topic == NULL ? "system" : topic, CP_WINANSI); // Register the server DdeNameService(g_pidInst, g_serverName, NULL, DNS_REGISTER); return true; }
static void mswindows_init_dde (void) { /* Initialize DDE management library and our related globals. We execute a * dde Open ("file") by simulating a drop, so this depends on dnd support. */ mswindows_dde_mlid = 0; mswindows_dde_enable = 0; qxeDdeInitialize (&mswindows_dde_mlid, (PFNCALLBACK)mswindows_dde_callback, APPCMD_FILTERINITS|CBF_FAIL_SELFCONNECTIONS| CBF_FAIL_POKES|CBF_SKIP_ALLNOTIFICATIONS, 0); mswindows_dde_service = qxeDdeCreateStringHandle (mswindows_dde_mlid, XETEXT (XEMACS_CLASS), XEUNICODE_P ? CP_WINUNICODE : CP_WINANSI); /* The following strings we Unicode-ize ourselves: -- SZDDESYS_TOPIC is system-provided -- MSWINDOWS_DDE_TOPIC_EVAL is defined by us -- MSWINDOWS_DDE_ITEM_RESULT is defined by us -- MSWINDOWS_DDE_ITEM_OPEN is used in internal-format comparisons */ mswindows_dde_topic_system = qxeDdeCreateStringHandle (mswindows_dde_mlid, XETEXT (SZDDESYS_TOPIC), XEUNICODE_P ? CP_WINUNICODE : CP_WINANSI); mswindows_dde_topic_eval = qxeDdeCreateStringHandle (mswindows_dde_mlid, XETEXT (MSWINDOWS_DDE_TOPIC_EVAL), XEUNICODE_P ? CP_WINUNICODE : CP_WINANSI); mswindows_dde_item_result = qxeDdeCreateStringHandle (mswindows_dde_mlid, XETEXT (MSWINDOWS_DDE_ITEM_RESULT), XEUNICODE_P ? CP_WINUNICODE : CP_WINANSI); mswindows_dde_item_open = qxeDdeCreateStringHandle (mswindows_dde_mlid, XETEXT (MSWINDOWS_DDE_ITEM_OPEN), XEUNICODE_P ? CP_WINUNICODE : CP_WINANSI); DdeNameService (mswindows_dde_mlid, mswindows_dde_service, 0L, DNS_REGISTER); }
WEXPORT WServer::WServer( const char *service, const char *topic, WObject* owner, sbc notify ) : _procid( 0 ) , _service( 0 ) , _topic( 0 ) , _ok( false ) { /**********************/ if( _server == NULL ) { _server = this; _owner = owner; _notify = notify; _procInst = MakeProcInstance( (FARPROC)serverCallback, GUIMainHInst ); if( !DdeInitialize( &_procid, (PFNCALLBACK)_procInst, INITFLAGS, 0L ) ) { _service = DdeCreateStringHandle( _procid, (char *)service, CP_WINANSI ); _topic = DdeCreateStringHandle( _procid, (char *)topic, CP_WINANSI ); if( DdeNameService( _procid, _service, 0, DNS_REGISTER ) ) { _ok = true; } } } }
static void mswindows_delete_device (struct device *d) { #ifdef HAVE_DRAGNDROP DdeNameService (mswindows_dde_mlid, 0L, 0L, DNS_UNREGISTER); DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_item_result); DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_item_open); DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_topic_system); DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_topic_eval); DdeFreeStringHandle (mswindows_dde_mlid, mswindows_dde_service); DdeUninitialize (mswindows_dde_mlid); # if !defined (NO_CYGWIN_COM_SUPPORT) CoUninitialize (); # endif #endif DeleteDC (DEVICE_MSWINDOWS_HCDC (d)); #ifndef NEW_GC xfree (d->device_data); #endif /* not NEW_GC */ }
/* Windows main routine */ int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { MSG msg; WNDCLASS wndclass; FARPROC pfnDdeCallback; UINT ddeerror; int argc = 3; char *argv[] = {"xsb","-i","-n"}; if (hPrevInstance) return FALSE; wndclass.style = 0; wndclass.lpfnWndProc = xsbProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); wndclass.hbrBackground = GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; RegisterClass(&wndclass); hwnd = CreateWindow(szAppName,"XSB DDE Server",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, // x,y position CW_USEDEFAULT,CW_USEDEFAULT, // 200,100, // x,y size NULL,NULL,hInstance,NULL); ShowWindow(hwnd,nCmdShow); // nCmdShow UpdateWindow(hwnd); /* Initialize for DDE */ pfnDdeCallback = MakeProcInstance((FARPROC)DdeCallback,hInstance); idInst = 0; ddeerror = DdeInitialize(&idInst, (PFNCALLBACK)pfnDdeCallback, CBF_SKIP_REGISTRATIONS | CBF_SKIP_UNREGISTRATIONS, 0L); if (ddeerror) { sprintf(tempstring,"Could not initialize server!\n rc=%x, idInst=%x",ddeerror,idInst); MessageBox(hwnd,tempstring,szAppName, MB_ICONEXCLAMATION|MB_OK); DestroyWindow(hwnd); return FALSE; } freopen("xsblog","w",stdout); freopen("xsblog","a",stderr); /* Initialize xsb */ xsb_init(argc,argv); /* This seems necessary??? huh??? rcode = xsb_query_string("true."); while (!rcode) {rcode = xsb_next();} */ hszService = DdeCreateStringHandle(idInst,szAppName,0); DdeNameService(idInst,hszService,NULL,DNS_REGISTER); /* sprintf(tempstring,"XSB INITIALIZED!\n rc=%x, idInst=%x",ddeerror,idInst); MessageBox(hwnd,tempstring,szAppName, MB_ICONEXCLAMATION|MB_OK); */ while (GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } /* Close XSB connection */ xsb_close(); /* terminate DDE */ (void) DdeFreeStringHandle(idInst,hszService); FreeProcInstance(pfnDdeCallback); DdeUninitialize(idInst); return msg.wParam; }
/***************************************************************** * DdeNameService (DDEML.27) */ HDDEDATA WINAPI DdeNameService16(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT16 afCmd) { return DdeNameService(idInst, hsz1, hsz2, afCmd); }
static WCHAR *get_url_from_dde(void) { static const WCHAR szApplication[] = {'I','E','x','p','l','o','r','e',0}; static const WCHAR szTopic[] = {'W','W','W','_','O','p','e','n','U','R','L',0}; static const WCHAR szReturn[] = {'R','e','t','u','r','n',0}; HSZ hszApplication = 0; UINT_PTR timer = 0; int rc; WCHAR *ret = NULL; rc = DdeInitializeW(&ddeInst, ddeCb, CBF_SKIP_ALLNOTIFICATIONS | CBF_FAIL_ADVISES | CBF_FAIL_POKES, 0); if (rc != DMLERR_NO_ERROR) { WINE_ERR("Unable to initialize DDE, DdeInitialize returned %d\n", rc); goto done; } hszApplication = DdeCreateStringHandleW(ddeInst, szApplication, CP_WINUNICODE); if (!hszApplication) { WINE_ERR("Unable to initialize DDE, DdeCreateStringHandle failed\n"); goto done; } hszTopic = DdeCreateStringHandleW(ddeInst, szTopic, CP_WINUNICODE); if (!hszTopic) { WINE_ERR("Unable to initialize DDE, DdeCreateStringHandle failed\n"); goto done; } hszReturn = DdeCreateStringHandleW(ddeInst, szReturn, CP_WINUNICODE); if (!hszReturn) { WINE_ERR("Unable to initialize DDE, DdeCreateStringHandle failed\n"); goto done; } if (!DdeNameService(ddeInst, hszApplication, 0, DNS_REGISTER)) { WINE_ERR("Unable to initialize DDE, DdeNameService failed\n"); goto done; } timer = SetTimer(NULL, 0, 5000, NULL); if (!timer) { WINE_ERR("SetTimer failed to create timer\n"); goto done; } while (!ddeString) { MSG msg; if (!GetMessageW(&msg, NULL, 0, 0)) break; if (msg.message == WM_TIMER) break; DispatchMessageW(&msg); } if (ddeString) { if (*ddeString == '"') { WCHAR *endquote = strchrW(ddeString + 1, '"'); if (!endquote) { WINE_ERR("Unable to retrieve URL from string %s\n", wine_dbgstr_w(ddeString)); goto done; } *endquote = 0; ret = ddeString+1; } else ret = ddeString; } done: if (timer) KillTimer(NULL, timer); if (ddeInst) { if (hszTopic && hszApplication) DdeNameService(ddeInst, hszApplication, 0, DNS_UNREGISTER); if (hszReturn) DdeFreeStringHandle(ddeInst, hszReturn); if (hszTopic) DdeFreeStringHandle(ddeInst, hszTopic); if (hszApplication) DdeFreeStringHandle(ddeInst, hszApplication); DdeUninitialize(ddeInst); } return ret; }
bool WdeDDEStart( HINSTANCE inst ) { WORD ret; DWORD flags; _wde_touch( inst ); /* MakeProcInstance vanishes in NT */ if( IdInst != 0 ) { return( FALSE ); } WdeDataClipbdFormat = RegisterClipboardFormat( WR_CLIPBD_DIALOG ); if( WdeDataClipbdFormat == 0 ) { return( FALSE ); } DdeProc = MakeProcInstance( (FARPROC)DdeCallBack, inst ); if( DdeProc == (FARPROC)NULL ) { return( FALSE ); } flags = APPCLASS_STANDARD | APPCMD_FILTERINITS | CBF_FAIL_ADVISES | CBF_FAIL_SELFCONNECTIONS | CBF_SKIP_REGISTRATIONS | CBF_SKIP_UNREGISTRATIONS; ret = DdeInitialize( &IdInst, (PFNCALLBACK)DdeProc, flags, 0 ); if( ret != DMLERR_NO_ERROR ) { return( FALSE ); } hDialogService = DdeCreateStringHandle( IdInst, WDE_SERVICE_NAME, CP_WINANSI ); if( hDialogService == (HSZ)NULL ) { return( FALSE ); } hDialogTopic = DdeCreateStringHandle( IdInst, WDE_DIALOG_TOPIC, CP_WINANSI ); if( hDialogTopic == (HSZ)NULL ) { return( FALSE ); } hFileItem = DdeCreateStringHandle( IdInst, WRE_FILE_ITEM, CP_WINANSI ); if( hFileItem == (HSZ)NULL ) { return( FALSE ); } hIs32BitItem = DdeCreateStringHandle( IdInst, WRE_32BIT_ITEM, CP_WINANSI ); if( hIs32BitItem == (HSZ)NULL ) { return( FALSE ); } hNameItem = DdeCreateStringHandle( IdInst, WRE_NAME_ITEM, CP_WINANSI ); if( hNameItem == (HSZ)NULL ) { return( FALSE ); } hDataItem = DdeCreateStringHandle( IdInst, WRE_DATA_ITEM, CP_WINANSI ); if( hDataItem == (HSZ)NULL ) { return( FALSE ); } DdeNameService( IdInst, hDialogService, (HSZ)NULL, DNS_REGISTER ); return( TRUE ); }