banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 28 February 2008 14:29

alexso
Juste Inscrit !
Date d'inscription: 8 Oct 2007
Messages: 5

[Mapbasic 9.xx] Mapinfo depuis c#

Bonjour à tous,

quelqu'un saurait il comment utiliser le runtime Mapinfo depuis c# ? ou à défaut VB.net

merci d'avance

So

Hors ligne

 

#2 Thu 28 February 2008 17:17

Florent
Participant actif
Lieu: Nantes
Date d'inscription: 5 Sep 2005
Messages: 86
Site web

Re: [Mapbasic 9.xx] Mapinfo depuis c#

Bonjour,

Ce genre de question (pas pour C#, mais pour vb et vba a déjà été vu sur le forum) sinon voici le code de mon module de connexion à MI.


Code:

Option Explicit On

Imports System.xml
Imports System.Runtime.InteropServices
Imports System.Reflection

Module modMain

    Public mi As Object
    Public miHandle As Long

    ' isntancie les classes MapInfo
    'Public objMi As New clsMapInfo
    'Public objQuery As clsMIQuery
    'Public objProj As clsProj

    ' api et variables relatives aux comportements des fenêtres
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
    Public Const GWL_HWNDPARENT As Integer = -8
    Public OriginalParentHwnd As Integer

    ' identifiant de la fenêtre windows
    Public miWinId As Integer


#Region " Lancement de l'application"

    Sub Main()

        ' se connecte à l'instance MapInfo
        ConnectToMapInfo()

        ' active le style xp
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)

        ' récupère le paramètre issu du menu MapInfo
        'Dim iValeur As Integer = CInt(Command())

        ' charge l'interface transmise en paramètres par MapInfo
        Dim iValeur As Integer = 2

        Select Case iValeur

            Case 1 ' interface à propos de...
                Application.Run(fPropos)

            Case 2 ' interface de géolocalisation unitaire d'une adresse
                Application.Run(fLocUnitaire)

            Case Else

        End Select

    End Sub

#End Region

#Region "Se connecte à une instance MapInfo en cours d'execution"

    Public Sub ConnectToMapInfo()

        Try

            mi = GetObject(, "MapInfo.Application")
            miHandle = mi.Eval("WindowInfo(1011, 12)")

        Catch ex As Exception
            MessageBox.Show(String.Concat(ex.Message.ToString, vbNewLine, "Merci de nous transmettre ce rapport d'erreur à l'adresse suivante :", vbNewLine, "support.technique@edrisi.fr"), "Dysfonctionnement de la procédure 'ConnectToMapInfo'", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End

        End Try

    End Sub

#End Region

#Region "Teste la présence d'un mbx en cours de fonctionnement"

    Private Function MbxIsRun(ByVal sMbx As String) As Boolean

        Try

            Dim i As Integer
            Dim oListApp As Object

            ' recherche le processus parmis la liste des applications MapBasic en cours
            oListApp = mi.MBApplications
            If oListApp.Count > 0 Then
                For i = 1 To oListApp.Count
                    If oListApp(i).Name = sMbx Then Return True : Exit Function
                Next
            End If

            ' retourne false si le processus n'a pas été trouvé
            Return False

        Catch ex As Exception
            Return False

        End Try

    End Function

#End Region

Bon courage


Florent

Hors ligne

 

#3 Fri 29 February 2008 09:22

alexso
Juste Inscrit !
Date d'inscription: 8 Oct 2007
Messages: 5

Re: [Mapbasic 9.xx] Mapinfo depuis c#

Merci beaucoup
j'ai adapté ca marche

Hors ligne

 

Pied de page des forums

Powered by FluxBB