//Globals ...
HSZ g_hszAppName
;
HSZ g_hszTopicName
;
HSZ g_hszItemName
;
int g_count = 0 ;
DWORD g_idInst
= 0 ;
//verklaringen
:
HDDEDATA EXPENTRY DdeCallback
( UINT type, UINT fmt , HCONV hConv , HSZ hsz1 , HSZ hsz2 , HDDEDATA hData , DWORD dwData1 , DWORD dwData2 ) ;
//WinMain ( ) ..
int APIENTRY WinMain
( hINSTANCE hInstance , hINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) {
//initialiseren DDEML ...
if ( DdeInitialize ( & g_idInst , DdeCallback , APPCLASS_STANDARD , 0 ) ) {
MessageBox
( NULL , " DdeInitialize ( ) mislukt " , " Fout " , MB_SETFOREGROUND ) ;
return
-1 ;
}
//Maak snaar handvatten ...
g_hszAppName
= DdeCreateStringHandle ( g_idInst , " DdemlSvr ' , NULL ) ;
g_hszTopicName = DdeCreateStringHandle ( g_idInst , " MyTopic ' , NULL ) op Twitter ;
g_hszItemName = DdeCreateStringHandle ( g_idInst , " MijnItem ' , NULL ) ; < br >
if ( ( g_hszAppName == 0 ) | | ( g_hszTopicName == 0 ) | | ( g_hszItemName == 0 ) ) {
MessageBox
( NULL , " DdeCreateStringHandle ( ) is mislukt " , " Fout " , MB_SETFOREGROUND ) ;
terugkeer -2 ;
}
//Register DDE server
if ( DdeNameService ( g_idInst , g_hszAppName , NULL , DNS_REGISTER ! ) ) {
MessageBox
( NULL , " DdeNameService ( ) is mislukt ! " , " Fout " , MB_SETFOREGROUND ) ;
return
-3 ;
}
//Creëer een timer te simuleren het wijzigen van gegevens ...
SetTimer
( 0,0,1,0 ) ;
//Message loop
:
MSG msg
;
terwijl ( GetMessage ( & msg , NULL , 0 , 0 ) ) {
//Op WM_TIMER , veranderen onze toonbank , en actualisering klanten ...
if ( msg . bericht == WM_TIMER ) {
g_count + + ;
DdePostAdvise
( g_idInst , g_hszTopicName , msg.wParam ;
}
//Onze DDE Terugbelfunctie ...
HDDEDATA EXPENTRY DdeCallback
( UINT wType , UINT fmt , HCONV hConv , HSZ hsz1 , HSZ hsz2 , HDDEDATA hData , DWORD dwData1 , DWORD dwData2 ) {
schakelaar
( wType ) {
//-------------------- --------------------------------------------
geval XTYP_CONNECT : . !
//Client verbinding probeert te reageren TRUE als we hebben wat ze willen ...
if ( ( DdeCmpStringHandles ( hsz1 , g_hszTopicName ) ) &&
( DdeCmpStringHandles ( hsz2 , g_hszAppName ) ! ) )
return
( HDDEDATA ) TRUE ; //server ondersteunt Topic | Service
anders
terugkeer
FALSE ; //SERVER ondersteunt geen Topic | Service
//------------------------------------ ----------------------------
geval XTYP_ADVSTART :
//Client starten adviserende lus .
//Zeg " ok " als we hebben wat ze vragen ...
if ( ! DdeCmpStringHandles ( hsz1 , g_hszTopicName ) ) &&
( ! DdeCmpStringHandles ( ( hsz2 , g_hszItemName ) ) )
return
( HDDEDATA ) TRUE ; //server ondersteunt Topic | Service
anders
terugkeer
FALSE ; //server biedt geen ondersteuning Topic | dienst
//----------------------------------------- -----------------------
geval
XTYP_ADVREQ :
//Client wil onze gegevens Omdat dit specifiek is . excel , we zullen
//ga je gang en neem aan dat ze willen XlTable - geformatteerde gegevens . voor een
//generic DDE server , wilt u misschien de verschillende formaten verwerken
//gespecificeerd door de doorgegeven fmt parameter .
if ( ! DdeCmpStringHandles ( hsz1 , g_hszTopicName ) &&
! DdeCmpStringHandles
( hsz2 , g_hszItemName ) ) {
korte xltableData
[ 100 ] ;
//tdtTable opnemen
...
xltableData [ 0 ] = 0x0010 ; //tdtTable
xltableData [ 1 ] = 4 ; //2 korte ints volgende
xltableData [ 2 ] = 1 ; //# rijen
xltableData [ 3 ] = 1 ; //# cols
//tdtInt opnemen
... < br >
xltableData [ 4 ] = 0x0006 ;
xltableData [ 5 ] = 2 ;
xltableData [ 6 ] = ( korte ) g_count ;
terugkeer DdeCreateDataHandle
( g_idInst , ( uchar * ) xltableData , 2 * 7 , 0 , g_hszItemName , fmt , 0 ) ;
}
//-------------- --------------------------------------------------
default
:
return
( HDDEDATA ) NULL ;
}
}
5
Plak de code in het bestand " main.cpp " die u hebt gemaakt .
Compile 6 en start het project .
Test Your Server
Press 7 " Ctrl " + " Shift " + " Esc " om het Windows Taakbeheer , selecteer het tabblad ' Processen ' .
8
Zorg dat " DdemlSvr.exe " is een van de applicaties die draaien . op de lijst
9
Start Microsoft Office Excel en typ " = DdemlSvr | ! MyTopic MijnItem " in een cel de cel moet nu de toenemende waarde van de g_count bevatten
< br . . >
Gebruik de server op afstand
10
Voer het " DdemlSvr.exe " in een Windows NT 4.0 machine die wordt genetwerkt . dan beginnen " DdeShare " vanaf de opdrachtregel .
< br > 11
Klik op "Aandelen " uit het menu dat verschijnt , dan is ' DDE Aandelen , " gevolgd door " Share toevoegen . "
12
Voer de volgende waarden onder " Application Name " : < br >
Share Naam : MyShare $
Oude Stijl
: DdemlSvr.DDE
Nieuwe Stijl
: DdemlSvr.OLE
Static : DdemlSvr
13
Enter " MyTopic " in de drie vakjes onder " Topic Name . " Selecteer "OK . "
14
Klik op " MyShare $ , " dan " Trust-Share , " dan is de " ingewijde aan toepassing inschakelen "checkbox . Selecteer" OK " in alle dialoogvensters en sluit " DdeShare . "
15
Run Excel op een andere Windows NT 4.0 machine , maar nog steeds op hetzelfde netwerk . < br >
Copy 16 het volgende :
= ' \\ \\ servernaam \\ NDDE $ ' | ' MyShare $ ' MijnItem
Plak 17 wat je gekopieerd in ! een cel in Excel . Vervang " SERVERNAME " met de naam van uw netwerk server machine . je moet een snel toenemend aantal in de cel te zien .