#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
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 RegionBon 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





