AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows MBN API für Delphi XE portieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows MBN API für Delphi XE portieren

Ein Thema von synAIRgy · begonnen am 10. Jul 2016 · letzter Beitrag vom 12. Apr 2019
 
synAIRgy

Registriert seit: 27. Jan 2005
Ort: Nürnberg
4 Beiträge
 
Delphi 5 Enterprise
 
#1

Windows MBN API für Delphi XE portieren

  Alt 10. Jul 2016, 14:29
MbnApi_TLB.pasIch suche Hilfe beim wrappen der Windows Mobile Broadband Type Library.

Ich will in einem Delphi Programm (XE5) auf Laptops die integrierte UMTS Karte kontrollieren.
Seit W7 gibt es hierfür eine eigene generische Windows API die Mobile Broadband MBN Api.
Ich habe trotz umfangreicher Suche nichts für Delphi gefunden, lediglich für C## habe ich auf dem Hamilton IT Blog ein Programm gefunden mit genau der Funktion die ich suche. Ein wenig in Visual Studio verändert habe ich den C## Code hier:
Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.NetworkInformation;

// Add a reference to COM Tab: 'Definition: UCM Extension API for MBN Type Library'
using MbnApi;

namespace MBN_Test
{
    class ConnectionEventsSink : IMbnConnectionEvents
    {
        public ConnectionEventsSink() { }
        public void OnConnectComplete(IMbnConnection newConnection, uint requestID, int status)
        {
            Console.WriteLine("OnConnectComplete");
        }
        public void OnConnectStateChange(IMbnConnection newConnection)
        {
            MBN_ACTIVATION_STATE activationState;
            string profileName;
            newConnection.GetConnectionState(out activationState, out profileName);
            Console.WriteLine("OnConnectStateChange - " + profileName + " - " + activationState);
        }

        public void OnDisconnectComplete(IMbnConnection newConnection, uint requestID, int status)
        {
            Console.WriteLine("OnDisconnectComplete");
        }

        public void OnVoiceCallStateChange(IMbnConnection newConnection)
        {
            Console.WriteLine("OnVoiceCallStateChange");
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            // Get first interface ID
            MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
            IMbnInterfaceManager infMgr = (IMbnInterfaceManager)mbnInfMgr;
            IMbnInterface[] interfaces = (IMbnInterface[])infMgr.GetInterfaces();
            IMbnInterface inf = interfaces[0];


            MbnConnectionManager mbnConnMgr = new MbnConnectionManager();
            IMbnConnectionManager conMgr = (IMbnConnectionManager)mbnConnMgr;


            IConnectionPointContainer icpc;
            icpc = (IConnectionPointContainer)mbnConnMgr;

            Guid IID_IMbnConnectionEvents = typeof(IMbnConnectionEvents).GUID;
            IConnectionPoint icp;
            icpc.FindConnectionPoint(ref IID_IMbnConnectionEvents, out icp);

            ConnectionEventsSink connEvtsSink = new ConnectionEventsSink();
            uint cookie;
            icp.Advise(connEvtsSink, out cookie);

            // Make sure the radio is turned on before here
            uint requestID = 0;
            IMbnConnection conn = inf.GetConnection();

            // CONNECT HERE - AND WAIT FOR EVENTS
            Console.WriteLine("Connect - wait for events");
            conn.Connect(MBN_CONNECTION_MODE.MBN_CONNECTION_MODE_PROFILE, "voda UK", out requestID);
            Console.WriteLine(" RequestID: " + requestID.ToString());

            // WAIT 60 SECONDS FOR EVENTS TO FIRE
            System.Threading.Thread.Sleep(60000);

            // DISCONNECT HERE
            Console.WriteLine("Disconnect - wait for events");
            conn.Disconnect(out requestID);
            Console.WriteLine(" RequestID: " + requestID.ToString());

            Console.ReadKey();

        }
    }
}
Die Windows Doku zur MBN API hier.
Eine Anleitung von Microsoft (How to Write Managed Code That Uses the Mobile Broadband API) gibt es hier:.
Jetzt will ich das auf Delphi portieren und habe dazu die Type Library mit dem Delphi XE5 IDE Importer importiert und kompiliert. (MBNApi_TLB.pas) ebenfalls im Anhang.

Ich versuche jetzt das kleine C## Programm auf Delphi umzusetzen.

Ich hänge bereits beim erzeugen der nötigen Instanzen. Interessant und entscheidend sind ja die 3 ersten Zeilen des "Main" Teils.

Code:
           MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
            IMbnInterfaceManager infMgr = (IMbnInterfaceManager)mbnInfMgr;
            IMbnInterface[] interfaces = (IMbnInterface[])infMgr.GetInterfaces();
            IMbnInterface inf = interfaces[0];
Der erste Schritt in Delphi könnte so sein, ich habe aber mal gelernt dass man bei einer TLB die CoKlasse für den Constructor verwenden muss ?
Code:
Var  MbnInfMgr: TMbnInterfaceManager;
      infMgr: IMbnInterfaceManager;

begin
MbnInfMgr:=TMbnInterfaceManager.Create(SELF);
.....
Irgenwie habe habe keinen Plan wie es weitergeht.

Könnte mir jemend helfen oder einige Tips geben wie ich jetzt am bessten weiterverfahre.
Ich bin für jede Anleitung oder Beispiele dankbar.

Vielen Dank.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz