Deklaration: Function DDECallback(ByVal wType As Long, ByVal wFmt As Long, ByVal h_Conv _ As Long, ByVal h_Topic As Long, ByVal h_Service As Long, ByVal hData As _ Long, ByVal lData1 As Long, ByVal lData2 As Long) As Long End Function Beschreibung: Parameter:
wType Konstanten: Const XTYPF_NOBLOCK = &H2 ' Standard-Konstante (CBR_BLOCK funktioniert nicht) Const XCLASS_NOTIFICATION = &H8000 ' Die Rückgabe wird ignoriert; dient nur zur Benachrichtigung Const XCLASS_FLAGS = &H4000 ' Die Funktion muss DDE_FACK, DDE_FBUSY, oder DDE_FNOTPROCESSED zurückgeben Const XCLASS_DATA = &H2000 ' Die Funktion muss ein Handle zu Daten, CBR_BLOCK oder 0 zurückgeben Const XCLASS_BOOL = &H1000 ' 0 (False) oder 1 (True) muss zurückgegeben werden Const XTYP_ADVSTART = (&H30 Or XCLASS_BOOL) ' Noch keine Informationen Const XTYP_CONNECT = (&H60 Or XCLASS_BOOL Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_ADVREQ = (&H20 Or XCLASS_DATA Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_REQUEST = (&HB0 Or XCLASS_DATA) ' Noch keine Informationen Const XTYP_WILDCONNECT = (&HE0 Or XCLASS_DATA Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_ADVDATA = (&H10 Or XCLASS_FLAGS) ' Noch keine Informationen Const XTYP_EXECUTE = (&H50 Or XCLASS_FLAGS) ' Noch keine Informationen Const XTYP_POKE = (&H90 Or XCLASS_FLAGS) ' Noch keine Informationen Const XTYP_CONNECT_CONFIRM = (&H70 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_DISCONNECT = (&HC0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_ERROR = (&H0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_MONITOR = (&HF0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_REGISTER = (&HA0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Const XTYP_XACT_COMPLETE = (&H80 Or XCLASS_NOTIFICATION) ' Noch keine Informationen Const XTYP_UNREGISTER = (&HD0 Or XCLASS_NOTIFICATION Or XTYPF_NOBLOCK) ' Noch keine Informationen Rückgabewert: Rückgabekonstanten: Const DDE_FACK = &H8000 ' Die Transaktion wurde angenommen (nur möglich, wenn die eintreffende ' Nachricht XCLASS_FLAGS enthält) Const DDE_FBUSY = &H4000 ' Die Transaktion wurde nicht angenommen, weil eine andere noch ausgeführt ' wird (nur möglich wenn die eintreffende Nachricht XCLASS_FLAGS enthält) Const DDE_FNOTPROCESSED = &H0 ' Die Transaktion wurde nicht ausgeführt (nur möglich wenn die eintreffende ' Nachricht XCLASS_FLAGS enthält) Const CBR_BLOCK = &HFFFF ' Die Transaktion wird geblockt (nur möglich wenn die eintreffende Nachricht ' nicht XTYPF_NOBLOCK enthält, aber die Konstante XCLASS_DATA enthalten ist) Beispiel: ' Schreiben Sie diesen Code in ein öffentliches Modul Private Declare Function DdeQueryString Lib "user32" _ Alias "DdeQueryStringA" ( _ ByVal idInst As Long, _ ByVal hsz As Long, _ ByVal psz As String, _ ByVal cchMax As Long, _ ByVal iCodePage As Long) As Long ' DdeQueryString iCodePage-Konstanten Private Const CP_WINANSI = 1004 ' (Standard) ANSI Zeichensatz Private Const CP_WINUNICODE = 1200 ' Unicode Zeichensatz ' Callback uType-Konstanten Private Const XTYP_CONNECT = (&H60 Or XCLASS_BOOL Or XTYPF_NOBLOCK) ' Ein Client will sich verbinden Public hInst As Long, hService As Long, hTopic As Long, hConv As Long Public Function DDECallback(ByVal wType As Long, ByVal wFmt As Long, ByVal _ h_Conv As Long, ByVal h_Topic As Long, ByVal h_Service As Long, ByVal hData _ As Long, ByVal lData1 As Long, ByVal lData2 As Long) As Long Dim hInstCount As Long, TmpBuffer As String, BuffeLength As Long, _ Retval As Long, hWnd2ndInstance As Long Select Case wType Case XTYP_CONNECT ' Eine Anwendung unseres Typs verbindet sich mit der DDE ' Ermitteln des Servicenamens des anfragenden Clients BuffeLength = DdeQueryString(hInst, h_Service, TmpBuffer, 0&, CP_WINANSI) TmpBuffer = Space(BuffeLength + 1) Retval = DdeQueryString(hInst, h_Service, TmpBuffer, _ Len(TmpBuffer), CP_WINANSI) TmpBuffer = Left$(TmpBuffer, BuffeLength) ' Falls es ein Client unseres Typs ist dann unser wieder Fenster anzeigen If TmpBuffer = "VB Api Helpline" Then MsgBox "Es wurde der Start einer weiteren Instanz _ ermittelt.", , "Instanz ID: " & hInst Form1.Show DDECallback = 1 ' Anfrage bestätigen, dass ein DDE Server vorhanden ist End If End Select End Function ' Schreiben Sie den nachfolgenden Code in eine Form Private Declare Function DdeInitialize Lib "user32" _ Alias "DdeInitializeA" ( _ pidInst As Long, _ ByVal pfnCallback As Long, _ ByVal afCmd As Long, _ ByVal ulRes As Long) As Integer Private Declare Function DdeUninitialize Lib "user32" ( _ ByVal idInst As Long) As Long Private Declare Function DdeNameService Lib "user32" ( _ ByVal idInst As Long, _ ByVal hsz1 As Long, _ ByVal hsz2 As Long, _ ByVal afCmd As Long) As Long Private Declare Function DdeCreateStringHandle Lib "user32" _ Alias "DdeCreateStringHandleA" ( _ ByVal idInst As Long, _ ByVal psz As String, _ ByVal iCodePage As Long) As Long Private Declare Function DdeConnect Lib "user32" ( _ ByVal idInst As Long, _ ByVal hszService As Long, _ ByVal hszTopic As Long, _ pCC As Any) As Long Private Declare Function DdeFreeStringHandle Lib "user32" ( _ ByVal idInst As Long, _ ByVal hsz As Long) As Long ' DdeCreateStringHandle iCodePage-Konstanten Private Const CP_WINANSI = 1004 ' (Standard) ANSI Zeichensatz Private Const CP_WINUNICODE = 1200 ' Unicode Zeichensatz ' DdeNameService afCmd-Konstanten Private Const DNS_REGISTER = &H1 ' Registriert einen Fehlercode Private Const DNS_UNREGISTER = &H2 ' Deregistriert einen DDE Server ' DdeInitialize afCmd-Konstanten Private Const APPCLASS_STANDARD = &H0& ' Richtet das Programm als Standard_DDE Anwendung ein ' DDE Server starten Private Sub Form_Load() Dim Retval As Long ' DDE initialisieren, nur die CBF_CONNECTIONS soll empfangen werden Retval = DdeInitialize(hInst, AddressOf DDECallback, _ APPCLASS_STANDARD, 0&) If Retval << 0 Then Exit Sub End If ' 2 eindeutige Strings erstellen, die unsere Anwendung beschreiben hService = DdeCreateStringHandle(hInst, "VB Api Helpline", CP_WINANSI) hTopic = DdeCreateStringHandle(hInst, "www.vbapihelpline.de", CP_WINANSI) ' Verbinden mit der DDE, und auf Vorhandensein eines Servers testen hConv = DdeConnect(hInst, hService, hTopic, ByVal 0&) If hConv << 0 Then MsgBox "Es besteht bereits eine Instanz, Programm wird beendet", _ , "Instanz ID: " & hInst Unload Me Else ' Server starten falls noch keiner existiert Retval = DdeNameService(hInst, hService, 0&, DNS_REGISTER) End If End Sub ' DDE-Sitzung beenden Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) ' Beenden des Nachrichtenempfangs Call DdeNameService(hInst, hService, 0&, DNS_UNREGISTER) ' Strings auflösen Call DdeFreeStringHandle(hInst, hService) Call DdeFreeStringHandle(hInst, hTopic) ' Beenden der DDE-Sitzung Call DdeUninitialize(hInst) End Sub ' Fenster zum Testen der 2ten Instanz verstecken lassen Private Sub Command1_Click() Me.Hide End Sub Diese Seite wurde bereits 5.397 mal aufgerufen. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Buchempfehlung Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |