CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Zlecenie napisania programu

Zlecenie napisania programu

dział ogólny

Zlecenie napisania programu

Nowy postprzez automaniak » środa, 24 lipca 2013, 17:48

Potrzebuje programu sterującego innym programem.
Program miałby uruchomić program, przeskoczyc pomiedzy tabami, sprawdzic jedna czy dwie tabelki, wykonac jedna czy dwie operacje, wynik zapisac do pliku i już.

Niestety sam tylko troche kiedys bawiłem sie programowaniem w delphi i nie ma szans zebym w rozsądnym czasie zrealizował taki projekt.

Czy ktoś byłby chętny pomóc?
Liczyłbym na szkielet programu, ktory pokazywałby jak korzystac z poszczególnych elementów w moim docelowym programie.

jak juz bede wiedział jak sprawdzic, czy np. na danej liscie wystepuje dany string to np. potem bede juz umiał sobie dalej oprogramować. Albo przynajmniej bede mógł dalej próbować.

Pytanie, czy ktoś miałby ochotę zająć się czyms takim i przede wszystkim ile miałoby to kosztować?
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez automaniak » czwartek, 25 lipca 2013, 22:59

No nic, to medota prób i błędów będę raczej błędził :))))

Zacząłem:
za pomocą winId znalazłem nazwe klasy.
Za pomoca winexec otworzyłem program.
Znając nazwe klasy znalazłem uchwyt do okna.
Udało mi sie sendmeesage'em wysłac komunikat zamkniecia okna.
Hurra.

No i po pierwszej lekcji pojawiło sie kilka pytań:
- czy otwierając okno przez winexec nie mozna od razu złapac uchwytu?
- co zrobic jezeli mam otwartych kilka okien tego programu i uchwyt chciałbym uzależnic od tytułu okna?
- a początek nie chce zamykac programu tylko odczytać wartośc jednego pola tekstowego.
Niestety jeżdzac myszką po tym polu WinID nie pokazuje innej nazwy klasy - cały czas jest jedna i ta sama nazwa. Jak dostać sie do wartości pola?
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez Cyfrowy Baron » piątek, 26 lipca 2013, 00:47

automaniak napisał(a):- czy otwierając okno przez winexec nie mozna od razu złapac uchwytu?


Nie można. Poza tym metoda WinExec jest mocno przestarzała i polecam raczej funkcje ShellExecute lub CreateProcess.

automaniak napisał(a):- co zrobic jezeli mam otwartych kilka okien tego programu i uchwyt chciałbym uzależnic od tytułu okna?


Pobierając uchwyt do okna za pomocą funkcji FindWindow możesz podać oprócz nazwy klasy okna również jego nazwę, czyli tekst znajdujący się na belce tytułowej okna. Jeżeli wszystkie okna mają tą samą nazwę to nie da się ich rozróżnić.

automaniak napisał(a):- a początek nie chce zamykac programu tylko odczytać wartośc jednego pola tekstowego.


Też bym chciał, ale to niemożliwe. Możesz wysłać komunikat wprowadzający tekst do tego okna, ale nie odczytasz jego zawartości.

automaniak napisał(a):Niestety jeżdzac myszką po tym polu WinID nie pokazuje innej nazwy klasy - cały czas jest jedna i ta sama nazwa. Jak dostać sie do wartości pola?


Co to za program?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 02:02

Cyfrowy Baron napisał(a):
automaniak napisał(a):- a początek nie chce zamykac programu tylko odczytać wartośc jednego pola tekstowego.


Też bym chciał, ale to niemożliwe. Możesz wysłać komunikat wprowadzający tekst do tego okna, ale nie odczytasz jego zawartości.


Co własciwie zamyka temat.
Odczytywanie wartości to jeden z głównych problemów bo po pierwsze program miał eksportować pewne dane, po drugie sterownaie równiez miał opierać na wyczytanych danych.

automaniak napisał(a):Niestety jeżdzac myszką po tym polu WinID nie pokazuje innej nazwy klasy - cały czas jest jedna i ta sama nazwa. Jak dostać sie do wartości pola?


Co to za program?


Można go uruchomic tylko posiadając licencję. :(
Zreszta program tak mało popularny, że na pewno nie znasz.

Trochę się podłamałem :(
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez Cyfrowy Baron » piątek, 26 lipca 2013, 08:38

automaniak napisał(a):Odczytywanie wartości to jeden z głównych problemów bo po pierwsze program miał eksportować pewne dane, po drugie sterownaie równiez miał opierać na wyczytanych danych.


Jeżeli jest to pole typu TEdit lub podobne to w zasadzie da się pobrać z niego tekst. Chyba nawet wystarczy do tego funkcja GetWindowText.

automaniak napisał(a):Można go uruchomic tylko posiadając licencję. :(


To komplikuje problem. Licencja nie zawsze jest problemem...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 10:21

Cyfrowy Baron napisał(a):
automaniak napisał(a):Odczytywanie wartości to jeden z głównych problemów bo po pierwsze program miał eksportować pewne dane, po drugie sterownaie równiez miał opierać na wyczytanych danych.


Jeżeli jest to pole typu TEdit lub podobne to w zasadzie da się pobrać z niego tekst. Chyba nawet wystarczy do tego funkcja GetWindowText.


Baronie, przywracasz mi wiarę i nadzieję.
Jak to sprawdzić?

automaniak napisał(a):Można go uruchomic tylko posiadając licencję. :(


To komplikuje problem. Licencja nie zawsze jest problemem...[/quote]

No niby. Ale po pierwsze to jest tego typu licencja, ze kazdorazowo przy uruchomieniu programu licencja jest sprawdzana zdalnie na serwerze, po drugie z firmą jestem troche zaprzyjaźniony, wiec w tym temacie nie mam zamiaru kombinowac. :)
Regularnie płace za licencję i tak pozostanie.
Ale niestety nie na tyle zaprzyjaźniony, żeby temat udostępnienia dostepu do pewnych pól móc z nimi obgadac :)
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez polymorphism » piątek, 26 lipca 2013, 10:44

A może zabierasz się za sprawę od dvpy strony. Sprawdzałeś w dokumentacji, czy aplikacja nie ma zaimplementowanej komunikacji między procesowej, tj. OLE automation lub archaiczny DDE? A pliki?

Według dokumentacji GetWindowText (w pewnych przypadkach) nie zadziała jeśli okno należy do zewnętrznego procesu. Proponowane jest wysłanie komunikatu WM_GETTEXT.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 10:53

polymorphism napisał(a):A może zabierasz się za sprawę od dvpy strony.


Tego to ja jestem prawie pewien :)

Sprawdzałeś w dokumentacji, czy aplikacja nie ma zaimplementowanej komunikacji między procesowej, tj. OLE automation lub archaiczny DDE?


Nie ma żadnej dokumentacji. :)
Zresztą to jest dośc prosty program wiec bardzo nei sądzę. Ale znów - czy poza dokuementacją mozna to jakoś sprawdzić?

A pliki?


A pliki co? :)
Chcę sciagac dane wyświetlane na bieżąco i zmieniające sie co jakis czas. Na 99,9 nie są zapisywane w żadnym pliku. W sumei to na 100%

Według dokumentacji GetWindowText (w pewnych przypadkach) nie zadziała jeśli okno należy do zewnętrznego procesu. Proponowane jest wysłanie komunikatu WM_GETTEXT.


Zaraz popróbuje. Pierwsze pytanie jakie przychodzi mi do głwoy to jaki tekst on pobierze, bo przeciez w takim okienku róznych tekstów wiela :)

P.S. Jeszcze do postu Barona - to jest pole tekstowe bez możliwości edycji wiec podejrzewałbym raczej jakis Label a nie TEdit.
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 11:01

Niestety taki kod nic do zmiennej nie przypisuje:

Kod: Zaznacz cały
std::string zmienna;
zmienna = SendMessage(h, WM_GETTEXT,0,0);


Uchwyt h mam złapany ok, bo sendmessage WM_CLOSE wyłącza program.
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez Cyfrowy Baron » piątek, 26 lipca 2013, 11:39

Bo to się robi raczej tak:

KOD cpp:     UKRYJ  
 char display[1024] = "";
 SendMessage(hWnd, WM_GETTEXT, 1000, (LPARAM)display);
 Edit1->Text = display;


Uchwyt h mam złapany ok, bo sendmessage WM_CLOSE wyłącza program.


Masz uchwyt do okna, ale jeżeli chcesz coś pobrać z pola t6ypu TEdit z tego okna, to musisz pobrać jeszcze uchwyt do tego pola.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 11:45

Cyfrowy Baron napisał(a):Bo to się robi raczej tak:

KOD cpp:     UKRYJ  
 char display[1024] = "";
 SendMessage(hWnd, WM_GETTEXT, 1000, (LPARAM)display);
 Edit1->Text = display;


Uchwyt h mam złapany ok, bo sendmessage WM_CLOSE wyłącza program.


Masz uchwyt do okna, ale jeżeli chcesz coś pobrać z pola t6ypu TEdit z tego okna, to musisz pobrać jeszcze uchwyt do tego pola.


Widzisz, dobrze prawiłes ze od dupy strony :)
A jak pobrać uchwyt do pola?

Tak jak pisałem - najechanie na to pole przy włączonym WinID nie zmienia nazwy klasy.
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Re: Zlecenie napisania programu

Nowy postprzez polymorphism » piątek, 26 lipca 2013, 12:48

Ale znów - czy poza dokuementacją mozna to jakoś sprawdzić?

U producenta. Choć jeśli nie ma żadnej dokumentacji, to nie sądzę, żeby było to, o czym piszę.

A pliki co?

Chodziło mi o to, czy nie ma możliwości zapisywania zawartości w jakimś otwartym formacie (np. CSV), tak żeby była możliwość odczytania tego we własnej aplikacji. Ale rozumiem, że chodzi o cykliczne odczyty bieżących danych, więc i ta opcja odpada.

Pierwsze pytanie jakie przychodzi mi do głwoy to jaki tekst on pobierze, bo przeciez w takim okienku róznych tekstów wiela

Mowa była o kontrolce edit lub label, więc pobierze to, co trzeba. W przypadku złożonych kontrolek, trzeba użyć odpowiednich komunikatów. Problem może się pojawić w przypadku kontrolek nietypowych, wtedy wartości pól mogą być nie do wyciągnięcia.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez Cyfrowy Baron » piątek, 26 lipca 2013, 13:03

Skoro nie wiemy o jaki program chodzi, i nie możesz pobrać klasy obiektu to nic więcej nie mogę doradzić.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez Darek_C++ » piątek, 26 lipca 2013, 13:35

automaniak napisał(a):Program miałby uruchomić program, przeskoczyc pomiedzy tabami, sprawdzic jedna czy dwie tabelki, wykonac jedna czy dwie operacje, wynik zapisac do pliku i już.
To nie prościej taki program napisać :?: Przecież wiesz jakie robi operacje "wzorzec" .
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: Zlecenie napisania programu

Nowy postprzez automaniak » piątek, 26 lipca 2013, 13:42

Cyfrowy Baron napisał(a):Skoro nie wiemy o jaki program chodzi, i nie możesz pobrać klasy obiektu to nic więcej nie mogę doradzić.


A jakis inny sposób na pobranie klasy niz winID?
Jaki moze byc powód ze winId nic nie pokazuje? Autor programu cos poukrywał?

Darek_C++ napisał(a):
automaniak napisał(a):Program miałby uruchomić program, przeskoczyc pomiedzy tabami, sprawdzic jedna czy dwie tabelki, wykonac jedna czy dwie operacje, wynik zapisac do pliku i już.
To nie prościej taki program napisać :?: Przecież wiesz jakie robi operacje "wzorzec" .


Niestety nie da się. To znaczy może i się da, ale ja na pewno tego nie umiem i nie byłoby to aż tak proste.
Avatar użytkownika
automaniak
Bladawiec
Bladawiec
 
Posty: 11
Dołączył(a): środa, 24 lipca 2013, 17:37
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows7
Kompilator: code::blocks
Gadu Gadu: 47880814
    Windows 7Opera

Następna strona

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości

cron