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