auf Variable einer class zugreifen

der_Brain

Grünschnabel
Hallo an die Community!

ich hab hier eine formlose class und möchte aus einer anderen an die Variable ran kommen

Code:
 namespace EventAnalizer.Win32API.WindowName
{
	public class getWindowTitle
	{
		public string windowText;
		
		[ DllImport("user32.dll") ]
		static extern int GetForegroundWindow(); 

		[DllImport("user32.dll", EntryPoint="GetWindowText")]
		extern static int GetWindowText(int hwnd, StringBuilder s, int length);
		
		// Timer installieren
		// während seiner Ticks wird das WindowTitle des aktiven Fensters ausgelesen
		public void timer()
		{
			Timer t = new Timer(1000);
			t.Elapsed += new ElapsedEventHandler(tick);
			t.Start();
		}

		// auslesen des WindowTitle des aktiven Fensters
		private void tick(object sender, ElapsedEventArgs e)
		{
			int appWF = GetForegroundWindow();
			StringBuilder sb = new StringBuilder(256);
			GetWindowText(appWF, sb, sb.MaxCapacity);
			//Console.Out.WriteLine("{0}", sb.ToString(0, sb.Length));
			windowText= sb.ToString(0, sb.Length);
		}
	}
}

so ich möchte also auf die Variable "windowText" zugreifen

wie kann ich das?

mfg
der_Brain
 
Öhm, da die Variable nicht static ist musste natürlich ein Objekt der Klasse getWindowTitle instanzieren; dann kannst du über die Instanz auch deren Variable abrufen.
Ich würd aber lieber eine Eigenschaft draus machen und die dann nur mit get ausstatten.
 
Hi.

Wenn du eine Instanz der Klasse hast, einfach auf windowText zugreifen? Ist doch public.
Oder verstehe ich etwas an der Situation nicht.


MfG,
Alex
 
hallo und danke für die schnelle mühe!

verzeiht meine unwissenheit, aber ich versteh nich was ich mit euren tipps machen soll.

könntet ihr da ein wenig genauer werden?

mfg
der_Brain
 
Code:
EventAnalizer.Win32API.WindowName.getWindowTitle blubb = new EventAnalizer.Win32API.WindowName.getWindowTitle();
Console.WriteLine(blubb.windowText);

So meinen wir. Klasse instanzieren, um auf Klassenmember zugreifen zu können.

Hab eine Frage, warum ein Timer? MyersGer hat dir vorgeschlagen, anstatt der öffentlichen Variable eine Property zu verwenden. Dem stimme ich zu, und schlage dir weiters vor, in dieser Property die Anweisungen der vom Timer aufgerufenen Methode zu verwenden.

Code:
public class getWindowTitle
{
	
	[ DllImport("user32.dll") ]
	static extern int GetForegroundWindow(); 

	[DllImport("user32.dll", EntryPoint="GetWindowText")]
	extern static int GetWindowText(int hwnd, StringBuilder s, int length);
		
	public string WindowTitle
	{
		get
		{
			int appWF = GetForegroundWindow();
			StringBuilder sb = new StringBuilder(256);
			GetWindowText(appWF, sb, sb.MaxCapacity);
			//Console.Out.WriteLine("{0}", sb.ToString(0, sb.Length));
			windowText= sb.ToString(0, sb.Length);
		}
	}
}

MfG,
Alex

p.s.
Im übrigen wäre eine konstante Einhaltung der Netiquette nett. (Dies meine ich nun im Bezug auf die Rechtschreibung, im Speziellen der Groß-/Kleinschreibung.
 

Neue Beiträge

Zurück