Witam. Mam pewną aplikację. Żeby odpalić ją w formie mojej aplikacji muszę podać w jej pliku konfiguracyjnym ClassName mojej aplikacji w takiej postaci: "WindowsForms10.Window.8.app.0.b7ab7b". Wszystko działa i jest ok. Ale czasami, gdy uruchomię swoją aplikację to ClassName się zmienia i wtedy aplikacja dziedziczona nie uruchamia się w moim Form. Jak mógłbym w C# sprawdzić ClassName mojej aplikacji, żeby potem automatycznie podstawić ją do pliku konfiguracyjnego tej drugiej? Pozdrawiam.
Nie ma czegoś takiego jak "Class Name aplikacji". Każda aplikacja może mieć dowolną liczbę klas, z których każda ma swoją nazwę.
To, o czym piszesz (podawanie nazwy klasy w pliku konfiguracyjnym, żeby uruchomić aplikację) brzmi jak jakaś kosmiczna aberracja. Czemu to tak jest zrealizowane? Masz na to wpływ?
Dodałem zrzut ekranu z aplikacji dodanej w toolsach do tej aplikacji, której plik konfiguracyjny zmieniam. Służy właśnie po to żeby odczytać ClassName mojej Formy. Ale można "nacelować" na dowolną aplikację.
using System.Runtime.InteropServices;
...
[DllImport("user32.dll", CharSet=CharSet.Auto)]
extern static int GetClassName(IntPtr hWnd, [Out] StringBuilder lpClassName, int nMaxCount);
private void Form1_Load(object sender, EventArgs e)
{
var sb = new StringBuilder(256);
if (GetClassName(this.Handle, sb, sb.Capacity) > 0)
label1.Text = sb.ToString();
}
Mam jeszcze jedno pytanie. A od czego to zależy, że czasami te ClassName jest takie samo, a czasami na jedno uruchomienie aplikacji się zmienia.
litrmleka napisał(a):
Mam jeszcze jedno pytanie. A od czego to zależy, że czasami te ClassName jest takie samo, a czasami na jedno uruchomienie aplikacji się zmienia.
To przez 127 linijkę.
Nazwa klasy jest ustanawiana automatycznie. Nie zakładaj że będzie taka czy inna.