#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


