CadFrank Posté(e) le 8 juin 2017 Posté(e) le 8 juin 2017 Bonjour, J'utilise Autocad 2018 et j'essaie de l'ouvrir avec une fenêtre WPF mais cela ne fonctionne pas. J'ai fais mes recherche et il y a des trucs qui ne marche pas Recherche Voici le code[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("00000016-0000-0000-C000-000000000046")] public interface IMessageFilter { [PreserveSig] int HandleInComingCall(int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo); [PreserveSig] int RetryRejectedCall(IntPtr hTaskCallee, int dwTickCount, int dwRejectType); [PreserveSig] int MessagePending( IntPtr hTaskCallee, int dwTickCount, int dwPendingType); } /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window, IMessageFilter { [DllImport("ole32.dll")] static extern int CoRegisterMessageFilter(IMessageFilter lpMessageFilter, out IMessageFilter lplpMessageFilter); public MainWindow() { InitializeComponent(); IMessageFilter oldFilter; CoRegisterMessageFilter(this, out oldFilter); } private void btnCreer_Click(object sender, RoutedEventArgs e) { const string productid = "autocad.application.22"; AcadApplication acApp = null; try { acApp = (AcadApplication)Marshal.GetActiveObject(productid); } catch { try { Type acType = Type.GetTypeFromProgID(productid); acApp = (AcadApplication)Activator.CreateInstance(acType, true); } catch { MessageBox.Show("cannot create object of type \"" + productid + "\""); } } if (acApp != null) { acApp.Visible = true; } } #region IMessageFilter Members int IMessageFilter.HandleInComingCall( int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo ) { return 0; // SERVERCALL_ISHANDLED } int IMessageFilter.RetryRejectedCall( IntPtr hTaskCallee, int dwTickCount, int dwRejectType ) { return 1000; // Retry in a second } int IMessageFilter.MessagePending( IntPtr hTaskCallee, int dwTickCount, int dwPendingType ) { return 1; // PENDINGMSG_WAITNOPROCESS } #endregion } est ce que qu'elle qu'un aurait une solution? Merci,
(gile) Posté(e) le 8 juin 2017 Posté(e) le 8 juin 2017 Salut, Comme je ne sais pas ce que tu entends par : "ça ne fonctionne pas", je te donne un exemple simple qui fonctionne (en tous cas chez moi). Le fait d'utiliser la liaison tardive (late binding) avec le type dynamic permet de ne pas avoir à référencer les bibliothèque COM qui sont dépendantes des versions majeures d'AutoCAD et de la plateforme. L'inconvénient, c'est qu'on a plus d'intellisense, mais pour ce genre de test ça suffit bien. public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void OpenAcad(object sender, RoutedEventArgs e) { const string productid = "AutoCAD.Application.22"; dynamic acApp; try { acApp = Marshal.GetActiveObject(productid); } catch { try { acApp = Activator.CreateInstance(Type.GetTypeFromProgID(productid), true); } catch { MessageBox.Show("Cannot create object of type \"" + productid + "\""); return; } } // boucle tant qu'AutoCAD n'est pas démarré et visible while (true) { try { acApp.Visible = true; break; } catch { } } // maximise la fenêtre AutoCAD acApp.WindowState = 3; // AcWindowState.acMax; } } Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
CadFrank Posté(e) le 8 juin 2017 Auteur Posté(e) le 8 juin 2017 je vien de trouver une de tes anciennes discussion et avec elle AutoCAD ouvre. Discussion
CadFrank Posté(e) le 8 juin 2017 Auteur Posté(e) le 8 juin 2017 Merci encore de ton aide. Toujours apprécié
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant