Laden...

[erledigt] Zur Laufzeit an einen anderen Prozess anhängen

Erstellt von Andreas.May vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.317 Views
Andreas.May Themenstarter:in
915 Beiträge seit 2006
vor 15 Jahren
[erledigt] Zur Laufzeit an einen anderen Prozess anhängen

Hallo Comminity,
ich habe folgendes, zurzeit Programmiere ich ein AddIn für MS Outlook, dafür verwende ich von einem Fremdanbieter einen AddIn Wrapper. Das ganze klappt auch wunderbar, nur habe ich folgendes Problem. Wenn das AddIn Regestriert wurde, kann ich nicht einfach Outlook als externes Startprojekt angeben (Start-Debug->External Programm) und in meinen Code rein zu debuggen. Das ganze funktioniert allerdings wenn ich mich an den Prozess anfüge (Attach To Process).

Nun hatte ich gedacht ich mache mir das ganze einfach indem ich einfach ein Windowsprogramm schreibe das über Proccess Outlook startet. Und via WMI mir ein Event sendet wenn Outlook wirklich da ist. Dann wollte ich mit einfach die Assembly reinladen von dem Outlook AddIn (Assembly.LoadFrom) und dann VS Studio einfach in den Prozess von Outlook einklinken.

Das einklinken funktioniert soweit, zumindest bekomme ich beim Versuch mich einzuklinken in Outlook den Hinweis das ich mich bereits auf dem Prozess befinde. Leider springt mir der Compiler dennoch auf keinen angelegten Breakpoint. Also, irgendwas läuft schief 🙂

Vielleicht hat ja jemand eine Idee woran es hapert.


		// outlook addin assembly
		Assembly info =	Assembly.LoadFrom(<Pfadname usw.. + *.dll>);
			
			PropertyData propertyData = e.NewEvent.Properties["TargetInstance"];

			if (propertyData != null)
			{
				ManagementBaseObject mbo = propertyData.Value as ManagementBaseObject;

				int id = Convert.ToInt32(mbo["ProcessId"]); // get current process id
				_Watcher.Stop(); // stops the wmi watcher

				EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.8.0");

				EnvDTE.Processes procs = dte.Debugger.LocalProcesses;
				foreach (EnvDTE80.Process2 p in procs)
				{
					if (p.ProcessID == id) // check process id
					{
						p.Attach(); // p.Attach2("Managed"); 
						dte.Debugger.CurrentProcess = p; // attach to Outlook Process
						break;
					}
				}
			}
		}


Danke schon mal.
Gruß
Andi

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(

Andreas.May Themenstarter:in
915 Beiträge seit 2006
vor 15 Jahren

Ohman.. habs gefunden.

VS 2008 -> VisualStudio.DTE.9.0...
Hatte im Hintergrund nur VS2005 noch laufen...

Wie vernichtet stand Andreas unter den flammenden Augen seiner Kunden.
Ihm war's, als stünde des Schicksals dunkle Wetterwolke über seinem Haupte X(