Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

C# - ManagementObject wypisanie okreslonego ciagu

25 Mar 2015 19:28 840 12
  • Level 9  
    Witam ostatnio zaczalem pisac programik ktory podaje dane komputera w konsoli
    niestety niektore typy podaja wiecej wartosci niz bylo by mi potrzebne, i nie moge ich sprecyzowac
    nie moge sobie poradzic z tym, podejrzewam ze trzeba uzyc tablicy ale narazie nie wiem dokladnie jak mam to zrobic, szukalem po goglach nie uzyskalem zadowalajacego wyniku

    wkleje kod


    Code: csharp
    Log in, to see the code


    teraz wkleje wam skrina z konsoli jak to wyglada

    C# - ManagementObject wypisanie okreslonego ciagu

    Mnie interesuje z tego skrina tylko 8 ciag. czyli broadcom 802 gdyz jest to odpowiednia czesc w moim komputerze.
    Wiec jak sie pozbyc reszty wpisow i ustawic do wypisania tylko ten ciag?
    I co wazniejsze wtopic to w ta klase...
    bardzo prosze o pomoc
  • Helpful post
    Moderator of Cars
    Odpowiedz sobie na pytanie co wyróżnia ten interfejs od pozostałych... zapytanie jest SQLowe, więc możesz je zawęzić już na tym etapie. Czy koniecznie chcesz korzystać z ManagementObject?

    Dobry zwyczaj - unikaj wypisywania czegokolwiek przez funkcje/metody. Tym powinna się zajmować główna funkcja programu, ew. odrębna metoda.

    :arrow: http://blog.techmeout.tv/programming/c-network-interface-card-information-application/
  • Level 9  
    Dzieki za wskazowke, jestem poczatkujacy wiec korzystam z przykladow znalezionych w necie, i staram sie cos ulepszyc w nich

    Chyba nie musze koniecznie korzystac z managementobject, moge uzyc czegos innego o ile to mozliwe. Jako ze jestem poczatkujacy myslalem ze jest to odpowiednia klasa by wypisac interesujace mnie dane z mojego czy tez innych komputerow :)

    nie chodzi o to ze musi byc to jedna stala metoda ktora musze uzywac tylko do wypisywania tego rodzaju rzeczy, moge sprobowac napisac nowa, problem w tym ze nie umiem tego napisac razem z tablica...

    tak wiec jakies konkretne wskazowki moge otrzymac?
  • Helpful post
    Moderator of Cars
    Tak jest lepiej (choć trochę przekombinowane z yield):
    Code: csharp
    Log in, to see the code

    Lista zawiera wszystkie interfejsy sieciowe, mogą się różnie nazywać i być w różnej kolejności w zależności od komputera i wersji językowej systemu.
  • Level 9  
    nie wiem czy sie zrozumielismy :D nie zupelnie chodzilo mi o to zeby wypisac wszystkie rzeczy
    chodzilo mi tylko o ten jeden wpis

    Karta sieciowa Broadcom 802.11n

    chcialem zeby on tylko byl pokazywany z wlasciwosci "Name" bez tych pozostalych...
    gdyz robie ten sam program przeniesiony na windows form niestety tam

    wypisuje mi pierwsza z brzegu wartosc 0 dla "Name" czyli wan miniport sstp i zadnej innej
    a ja potrzebuje konkretnie tylko ta Karta sieciowa Broadcom 802.11n i zadnej pozostalej

    wybacz za zamieszanie lub zle sprecyzowane zapytanie
  • Helpful post
    Level 40  
    Chcesz uzyskać konkretnie nazwę karty WiFi? Bo u mnie np. to wcale nie jest 8 pozycja, na innych komputerach może być jeszcze inna, więc trzeba trochę pokombinować z warunkami...
  • Level 9  
    tak tak dokladnie nazwe karty wifi, gdyz robie taki zwykly maly programik ktory umozliwia odczytywanie zainstalowanych urzadzen w kompie.
    cos na styl sisoft sandra albo innych takich
    tyle ze na moj uzytek wiec mam tam tylko kilka potrzebnych mi wartosci jak adres IP czy karta graficzna itd.
    wlasnie duzy problem mam z ta karta sieciowa. I jeszcze z jedna taka wlasciowoscia mam problem.
    ale jakbym zobaczyl mniej wiecej jak mam to zrobic zeby uzyskac dobre wypisanie tego czego szukam to bym dopisal tez do drugiej wlasciowosci odpowiedni kod :)
  • Helpful post
    Moderator of Cars
    Po pierwsze nie używaj entera w oknie wiadomości do przechodzenia do nowej linii... Enter służy zawsze i wyłącznie do rozpoczynania nowego akapitu. Linie tekstu łamią się same.

    Po drugie moja funkcja zwraca obiekt IEnumerable, który pozwala na wybranie pojedynczego elementu:
    Code:
    string x = net_adapters2("Win32_NetworkAdapter", "Name").ElementAt(0);
  • Level 9  
    a czyli wystarczy ze zamiast (0) wstawie 1 :)
    to fajnie
    dzieki Ci wielkie :)
  • Helpful post
    Level 40  
    To nie takie proste, jak się kolegom na pierwszy rzut oka wydaje...

    U mnie np. kod Wilka daje coś takiego:
    C# - ManagementObject wypisanie okreslonego ciagu

    a kod Tzoka - czy dam ElementAt(0) czy ElementAt(1) zwraca mi któryś z WanMiniport. Owszem, mogę znaleźć indeks i dostosować go pod moją bieżącą konfigurację, ale chyba nie o to chodzi??

    Przychodzą mi na myśl dwie metody, żadna nie jest doskonała. Dodam, że testowałem je tylko na moim sprzęcie.

    Niestety, niektóre programy instalują czasem w systemie adaptery "udające" karty sieciowe - np. przy VPNie czy adapter TAP (te dwia znam bo mam, a o ilu nie wiem?).
    Obydwie metody je wykrywają jako karty, więc trzeba je jakoś odfiltrować. Można próbować po nazwie odfiltrować po nazwie słowo "Adapter", co też czynię.

    1. Pierwsza metoda - ustala kartę WiFi.
    Code: csharp
    Log in, to see the code


    2. Druga metoda - ustala kartę WiFi i LAN:
    Code: csharp
    Log in, to see the code


    Tutaj masz pełną listę właściwości klasy Win32_NetworkAdapter, jak widać nie ma tam nic, co by odpowiadało tylko za WiFi.
    Być może istnieje jakaś lepsza metoda, jednak na szybko nic innego nie znalazłem...
  • Level 9  
    Czesc Marcin dzieki za odpowiedz.
    W sumie chodzilo mi o to zeby ten program wypisywal karte wifi na kazdym innym komputerze na ktorym zostanie program odpalony. Tak wiec myslalem ze bedzie to latwiejsze do zrobienia.
    Sprawdzalem ta liste wlasciwosci i zadna nie daje mi wlasciwego wyniku odpowiadajacego scisle za karte wifi w komputerze. dlatego chcialem przefiltrowac dokladnie "Name" gdyz tylko tutaj moglem znalezc nazwe tejze karty...
  • Moderator of Cars
    ...ale w każdym komputerze wartość Name karty WiFi może być inna! Uparłeś się, że chcesz indeksowane elementy, to Ci zrobiłem. Nie chciało mi się szukać tej listy do Win32_NetworkAdapter, ale sugerowałem żebyś to zrobił.

    Masz tu do wyboru dwie wersje funkcji zwracającej nazwy kart bezprzewodowych zainstalowanych w komputerze.

    Code: csharp
    Log in, to see the code
  • Level 9  
    dziekuje, przepraszam za klopot :) poprostu nie umiem sobie sam poradzic z tym a to co wyszukalem na googlach w zaden sposob nie odpowiadalo za to co chcialem uzyskac