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;
}
Example #2
0
File: gvwdde2.c Project: 131/gsview
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);
    }
}
Example #3
0
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();
}
Example #5
0
/*
 * 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 */
Example #6
0
/*************************************************************************
 * 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;
    }
}
Example #7
0
/*************************************************************************
 * 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);
    }
}
Example #8
0
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;
}
Example #9
0
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();
        }
    }
}
Example #10
0
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;
}
Example #11
0
File: POWDDE.C Project: Madzi/POW
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);                
}                
Example #12
0
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;
}
Example #13
0
/*
 * 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 */
Example #14
0
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");
  }
}
Example #16
0
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;
}
Example #17
0
File: POWDDE.C Project: Madzi/POW
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);
    }    
}
Example #18
0
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;
}
Example #19
0
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 );
    }
}
Example #20
0
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);
  }
Example #21
0
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;
    }
}
Example #22
0
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;
}
Example #23
0
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;
}
Example #24
0
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);
}
Example #25
0
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;
            }
        }
    }
}
Example #26
0
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 */
}
Example #27
0
/* 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;
}
Example #28
0
/*****************************************************************
 *            DdeNameService  (DDEML.27)
 */
HDDEDATA WINAPI DdeNameService16(DWORD idInst, HSZ hsz1, HSZ hsz2, UINT16 afCmd)
{
    return DdeNameService(idInst, hsz1, hsz2, afCmd);
}
Example #29
0
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;
}
Example #30
0
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 );
}