Jump to content

Pieeja Windows aplikāciju funkcijām


mandrake7
 Share

Recommended Posts

Vai ir kāds veids kā piekļūt Windows aplikāciju funkcijām, izmantojot C++, vai Python?

Mans mērķis būtu sekojošs:

Uz GPIO (uz LattpePanda, piemēram) ir fiziska poga. Ar šo pogu vēlos palaist konkrētu darbību konkrētā, palaistā Win softā. Vai ir kāds veids kā to dabūt gatavu? Iespējams, tā ir kāda metode, kuru nezinu, līdz ar to nevaru sagooglēt...

  • Patīk 1
Link to comment
Share on other sites

mandrake7

Par GPIO jautājumu nav. Man nav skaidrs kā atrast pavedienu uz aplikāciju funkcijām un tās palaist, piemēram:

Esmu palaidis softu, kas veic bilžu izdruku. Logā redzama poga Print, to nospiežot, notiek drukāšana ar jau iepriekš definētiem parametriem. Vairumam softu ir iestrādāti keyboard shortcuti un šajā gadījumā būtu jānostrādā Ctrl+P (print), taču tā nav iestrādāta. Jautājums - vai no vienas aplikācijas (paša uzrakstītas) ir iespējams palaist print pogu citā strādājošā Win aplikācijā? Iedomājos vēl tādu variantu - skripts, kas veic peles klikšķi noteiktā koordinātā, šis variants varētu strādāt. Bet tomēr - vai ir iespēja palaist pogu (funkciju) "no atmiņas"? 

Link to comment
Share on other sites

un kā šādi klikeri tiks izsaukti uz pogas spiedienu?

 

man jau liekas, ka gpio pogas detektēšanai + 3šās puses softa bakstīšanai vienkāršāk ir būt vienā softā ar visu loģiku iekšā - tai skaitā atrada tādu logu/neatrada, sanāca/nesanāca. Esmu rakstījis WinAPI gan uz C++, gan C# - ieliekam to kustomizāciju un miers mājās, cik tur - 30min darbs visam?

Link to comment
Share on other sites

 

 

un kā šādi klikeri tiks izsaukti uz pogas spiedienu?

 

 

Vai ir kāds veids kā piekļūt Windows aplikāciju funkcijām, izmantojot C++, vai Python?

 

Autors jau minēja, ka pogas detektēšana viņam problēmas nesagādā.

 

 

Par GPIO jautājumu nav.
Link to comment
Share on other sites

mandrake7

Ja tai softā, kas drukā bildes, būtu iestrādāta funkcija, kas atbalstītu palaist Print ar klaviatūru, tad nebūtu problēmu (kaut vai ar AutoHotKey). Par GPIO arī nav jautājumu.

Jautājums paliek atklāts - kā palaist funkciju, vai trigerēt to pogu, kas ir iestrādāta softā (kuru ne jau pats esmu taisījis, softs ir pirkts)?

Link to comment
Share on other sites

Vienkāršākais variants būs ar AutoHotkey un peles klikšķiem pēc koordinātēm (risinājums tikai tavam datoram/ekrānam).

Labots - itanium
Link to comment
Share on other sites

Jautājums paliek atklāts - kā palaist funkciju, vai trigerēt to pogu, kas ir iestrādāta softā (kuru ne jau pats esmu taisījis, softs ir pirkts)?

 

Takš uzrakstīju jau, vairākas reizes esmu taisījis integrācijas ar tām pašām WinAPI funkcijām, uz kurām iedevu linkus MSDNā. 

 

pa soļiem, kā es uztaisītu jēdzīgu risinājumu:

 

1) Uztaisam C# projektu ar GPIO lasīšanu. Vai C++ - WinAPI tas ir pofik.

2) Pievienojam FindWindowEx() funkciju - pēc taitla, pēc loga klases. http://www.catch22.net/software/winspy-17- ar šito atrodi, kāda ir logam klase.

3) Ir tāds logs - sūtam ziņojumu tam. Nav loga - parādām atbilstošu kļūdas paziņojumu VAI palaižam to softu un sūtam šortkatu. pēc analoģijas ar šito:  http://stackoverflow.com/questions/5144877/sending-ctrl-s-message-to-a-window, tur C# kods ir ar Ctrl+S. Tāda pati funkcija izsaucama uz C++, ja izmanto to.

4) Ja šortkata atbalsta nav - sameklējam čailda lodziņu (pogu) pēc atrastās parenta loga handles (tas pats FindWindowEx) un klikojam uz to. un viss. 

Te piemērs, kā atrast pogu (pofik, kādas viņai šobrīd koordinātes): http://stackoverflow.com/questions/20305166/trying-to-get-a-button-from-a-child-window 

pogas klikošana šeit - http://stackoverflow.com/questions/14962081/click-on-ok-button-of-message-box-using-winapi-in-c-sharp 

 

un nekādas hārdkodētas koordinātes, kur nedod dies', pabīdīsies lodziņš vai minimizēts/maksimizēts būs, un viss softs pa kāju..

 

 

 

jā ir tādas programmas, kas ieraksta un pēc tam atskaņo lietotāja ievadi
 

viņas visas iekšēji lieto tās pašas WinAPI funkcijas, tikai neliek lietotājam vērt vaļā WinSpy++ un meklēt, kas tur iekš kā ir. Ja vajag pāris reizes uz 1 datora palaižamu prototipu, tad var uztaisīt ar tādiem, bet man liekas jocīgi vēl 1 dependenciju ieviest (ir/nav konkrētas markas klikeris instalēts, ir pieejams/nav pieejams šim profilam viņš, ir logs/nav loga..). Priekš kam, ja 1 softā var salikt visu funkcionalitāti, kas dara visu un parāda adekvātus kļūdas paziņojumus, ja nu galīgi auzas.

 

produkcijā tādu dependenciju uzturēt būtu marasms, bet nu fiksam prototipam der, ja galīgi negribas pašam programmēt UN klikeris uztur iespēju izsaukt funkcionalitāti ar .bat vai tml failiem no softa, kas detektē fiziskās pogas spiešanu.

Labots - usver
Link to comment
Share on other sites

mandrake7

Paldies, usver, par jēdzīgo izklāstu! Sākumā Tavam ieteikumam nepievērsu uzmanību, jo nav bijusi pieredze ar ko tamlīdzīgu.

Pēc jaunā gada pievērsīšos šim projektam nopietnāk, pagaidām tikai meklēju atsevišķus risinājumus. 

Link to comment
Share on other sites

 

 

un nekādas hārdkodētas koordinātes, kur nedod dies', pabīdīsies lodziņš vai minimizēts/maksimizēts būs, un viss softs pa kāju..

To var atrisināt, pirms darbību veikšanas, maksimizējot logu, bet tas viss, protams, ir ČŽ variants :)

Link to comment
Share on other sites

To var atrisināt, pirms darbību veikšanas, maksimizējot logu, bet tas viss, protams, ir ČŽ variants Ieteikt

 

Un tad vienu dienu nopirks jaunu monitoru, vai pieslēgs ārējo ar citu rezolūciju un visas koordinātes nomainīsies. Vai arī palaidīs kaut kādu 3rd-party toolbaru, kurš vienmēr sēdēs ekrāna augšējā daļā (vai kreisajā pusē). Daudz vienkāršāk ir atrast vajadzīgo kontroli un noklikšināt to, nevis emulēt peles darbību.

Labots - bubu
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...