Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program reagujący na określony kolor pixela na ekranie

Xerof0p 25 Lis 2011 13:48 2209 13
  • #1 25 Lis 2011 13:48
    Xerof0p
    Poziom 20  

    Poszukuję programu, który uruchamia jakiś inny program albo alarmuje dźwiękiem wtedy, gdy określony przez usera pixel na ekranie przybierze określony przez usera kolor.
    Z góry dziękuję

    0 13
  • Pomocny post
    #2 25 Lis 2011 15:08
    wlw_wl
    Poziom 38  

    Pisałem jednemu z użytkowników taki program, tylko że tamten chyba wciskał określoną kombinację klawiszy.

    Uzyj wyszukiwarki to znajdziesz.

    0
  • #3 25 Lis 2011 20:26
    Xerof0p
    Poziom 20  

    wlw_wl napisał:
    Pisałem jednemu z użytkowników taki program, tylko że tamten chyba wciskał określoną kombinację klawiszy.

    Uzyj wyszukiwarki to znajdziesz.


    Znalazłem, ale mam problem z uruchomieniem. Mam .NET wersja 4 na windowsie XP Pro SP3. Pojawia mi się takie info:

    Program reagujący na określony kolor pixela na ekranie

    0
  • Pomocny post
    #4 25 Lis 2011 21:18
    wlw_wl
    Poziom 38  

    Ja tego nie pisałem na pewno na .NET 4, chyba na 2 ale nie pamiętam. Może na 3,5. Na pewno nie 4.

    .NET Framework'a nie wystarczy mieć najnowszego, trzeba mieć wszystkie - 2.0, 3.5, 4.

    0
  • #5 25 Lis 2011 23:40
    Xerof0p
    Poziom 20  

    Już działa. Po zainstalowaniu .NET 3.5.


    Fajny ten programik, ale do mojego użytku to bym potrzebował pewnych modyfikacji

    1. On ma czekać na wskazany kolor, a nie czekać aż wskazany kolor się zmieni. Innymi słowy ma czekać aż nadejdzie wskazany kolor.
    2. Próbowałem twój program użyć do uruchomienia skrótu klawiaturowego. Stworzyłem skrót do notepad.exe na pulpicie i temu skrótowy przyporządkowałem skrót klawiaturowy F12. W twoim programie ustawiłem klawisz F12. O dziwo, kiedy twój program działał, to notatnik się nie uruchamiał, co więcej nawet jak palcem naciskałem F12, to nie włączał się notatnik. Natomiast po zamknięciu twojego programiku, skrót klawiaturowy działał. Mnie by zależało aby działało 1 z dwojga: albo skróty klawiaturowe, albo żeby można było zaprogramować jako akcję kliknięcie myszką w określonym punkcie ekranu. Nawet bardziej to drugie.
    3. Ustawiłem programik na 2 sekundy. Wskazany pixel zmienił kolor tylko raz, a akcja wykonywana była bez końca co 2 sekundy. Nawet jak zamknąłem programik. Dopiero jak się przelogowałem, to przestało. Mnie by zależało, żeby akcja odbywała się tylko raz po każdym odnotowaniu.

    Da radę tak przerobić? ;-) Ok, to może podaj mi kod tego skryptu i ja sam popróbuję. Przy okazji pouczę się.

    0
  • #6 26 Lis 2011 00:14
    wlw_wl
    Poziom 38  

    To było pisane "z palca" na poczekaniu, nie wymagaj za wiele.
    Skoro naparza ten klawisz w kółko, to tak widocznie sobie życzył autor tamtego zapytania. Udaje wciskanie klawisza do momentu, aż ten piksel nie powróci do stanu pierwotnego. Jak będzie miał kolor startowy, to przestaje udawać i napis "piksel został zmieniony" znika.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    label1 to ten prostokąt przechowujący kolor piksela.

    Jak ma zadziałać tylko raz a nie w kółko, to wystarczy wykomentować linijkę
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    z
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Aby uruchomić notatnik zamiast klawisze wciskać, użyj tego
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    zamiast tego
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • #7 26 Lis 2011 19:02
    Xerof0p
    Poziom 20  

    Przepraszam za głupie pytanie: jak się włącza okienko, w którym wpisuje się ten kod, a potem kompiluje? Czy to jest pisane w języku c#? Jeśli nie, to w jakim?

    0
  • Pomocny post
    #8 26 Lis 2011 19:11
    wlw_wl
    Poziom 38  

    Moje okienko do wpisywania kodu nazywa się Microsoft Visual Studio 2008, z czego Ty skorzystasz to Twoja sprawa. Tak, jest to C#, bo taki miałem akurat wtedy kaprys :)

    0
  • #10 29 Lis 2011 20:28
    Xerof0p
    Poziom 20  

    Nie chce się zrobić kompilacja. Wywala błędy. Kompiluję za pomocą programu csc.exe, który jest dostarczany wraz z pakietem .NET

    Poniżej zmieniony kod i spis błędów:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #11 29 Lis 2011 20:35
    wlw_wl
    Poziom 38  

    Bo do tego jeszcze jest formatka, na której są etykietki (label) i inne obiekty. To nie jest program konsolowy. Przecież widziałeś oryginał.

    Formatka:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    Natomiast żeby stosować klasę Process, musisz dodać na początku jeszcze
    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0
  • #12 30 Gru 2011 11:10
    Xerof0p
    Poziom 20  

    @Dżyszla dzięki za linka. Postanowiłem skorzystać z tam zamieszczonych rad, jeśli mi się nie uda uzyskać docelowego produktu w C#.

    @wlw_wl Udało mi się przerobić ten program i nawet fajnie chodzi. Dzięki za mega pomoc!

    Mam jeszcze dalszy ciąg tego tematu. Mianowicie chciałbym uruchamiać ten program napisany w C# na maszynie, która ma tylk framework 2.0. Dlatego zabrałem się za przerabianie. Odinstalowałem wszystki frameworki prócz 2.0. Visual Studio 2010 też odinstalowałem i w jego miejsce zainstalowałem 2005.

    W 2005 utworzyłem nowy projekt i skopiowałem z tego utworzonego w Visual Studio 2010 projektu pliki Form1.cs oraz Form1.Designer.cs.

    I niestety wywala błąd podczas próby kompilacji w Visual Studio 2005 , że brakuje "Linq":
    "Error 1 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) d:\Documents\Visual Studio 2005\Projects\Pixelki\Pixelki\Form1.cs 7 14 Pixelki"

    Nie wiem co to Linq daje programowi, bo się za mało znam C#. Jak ten problem obejść?

    0
  • Pomocny post
    #13 30 Gru 2011 12:54
    marcinj12
    Poziom 40  

    Żeby kompilować programy pod .NET 2.0 nie musiałeś odinstalowywać VS2010, pozostałych frameworków ani instalować VS2005 - zrobisz sobie tylko niepotrzebnie śmietnik z komputera. We właściwościach projektu masz listę TargetFramework, wystarczyło wybrać .NET 2.0:
    Program reagujący na określony kolor pixela na ekranie

    LINQ to metoda dostępu do danych, rozszerzająca, upraszczająca i w pewnym stopniu unifikująca ten dostęp, wprowadzona od .NET 3.0. Na szczęście każdy program program z elementami LINQ można tak przerobić, żeby ich nie potrzebował, jednak ja nie widzę tych elementów w przytoczonym kodzie, więc prawdopodobnie chodzi o przestrzeń nazw:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    która jest domyślnie wstawiana w nowszych VS przy tworzeniu nowego projektu. Usuń to we wszystkich miejscach w projekcie a powinien się skompilować.

    0
  • #14 30 Gru 2011 13:18
    Xerof0p
    Poziom 20  

    @marcinj12 ok miałeś rację. Wielkie dzięki

    Wcześniej też wyeliminowałem linijkę "using System.Linq;", ale pojawiły się kolejne błędy, więc myślałem, że to ta linijka jest winna.

    Jednak okazało się, że winna nie była, lecz w trakcie "przeróbki" nie uaktualniłem w nowym pliku program.cs linijki mówiącej o używaniu namespace zadeklarowanej w Form1.cs, tudzież po prostu nie przeniosłem starego pliku program.cs do nowego projektu.

    Teraz jest ok.

    0