PC Ekspert Forum

PC Ekspert Forum (http://forum.pcekspert.com/index.php)
-   Aplikacije (http://forum.pcekspert.com/forumdisplay.php?f=37)
-   -   Trebam AutoHotKey pomoć - Otvaranje slike pomoću keyboard shortcuta (http://forum.pcekspert.com/showthread.php?t=274307)

ethan 17.11.2015. 23:48

Trebam AutoHotKey pomoć - Otvaranje slike pomoću keyboard shortcuta
 
Pozdrav,

Trebamo bih pomoć s AutohotKey programom:

Često editiram slike u Photoshopu i želim postići ovo:
- želim zadržati Windows Picture Viewer kao defaultni program za otvaranje slika, ali
- želim keyboard shortcutom ALT+1 otvoriti selektiranu sliku (ili više njih) u Photoshopu

To bi AutoHotKey trebao moći, jel tako?
Naisao sam na ovaj info na internetu:
https://autohotkey.com/board/topic/7...cific-program/
no nikako da uspijem postići željenu operaciju :hitthewal:

rodney 18.11.2015. 19:58

Pozdrav,
što si do sad pokušao od onog tamo?
Ako sam dobro skužio, treba ti ovako nešto:

Code:

Send, ^c ClipWait ;waits for the clipboard to have content Run, programpath "%clipboard%
gdje "programpath" zamijeniš pathom do tvoje instalacije photoshopa. npr "C:\Program Files\adobe\photoshop.exe" ili kako već izgleda kod tebe.

ethan 18.11.2015. 20:24

S obzirom da sam siguran da griješim u nekim početnim koracima, opisat ću cijelu situaciju:

- downlodao sam AutoHotkey i instalirao
- desni klik na desktop i napravio skriptu "Photoshop.ahk" i u nju stavio ovaj code:

Send, ^c
ClipWait ;waits for the clipboard to have content
Run, "C:\Program Files\Adobe\Adobe Photoshop CC 2014\Photoshop.exe" "%clipboard%

U ovom primjeru je kombinacija tipaka Ctrl+c ta koja bi trebala otvoriti selected file u Photoshopu, jel tako....to sad uopće nije bitno, promjeniti ću si kombinaciju kasnije, glavno da metoda proradi.

Sada...dvoklik na tu skriptu mi otvori photoshop koji mi odmah izbaci poruku "Could not complete you request because it is not the right kind of document"....nešto se dogodilo :)

Ako odem na Start - All Programs i pokrenem program "Autohotkey" - odmah mi izbaci Help jer:
"You ran AutoHotkey without telling it which script file to run, and it couldn't find a script in either of the usual places."

Ne kužim što trebam napravit da autohotkey počne registrirat kombinaciju tipaka Ctrl+c kao naredbu "otvori selektirani file u Photoshopu"?

Kuda trebam stavit tu skriptu da se program pokrene i pročita skriptu (probao sam staviti "Photoshop.ahk" skriptu u Documents....nista se ne dešava)

Znam da griješim u nekim osnovama....

syss 18.11.2015. 20:28

zašto baš ctrl+c od svih kombinacija? pa to je ono univerzalni copy... si probao neku kombinaciju koja ne radi ništa u win/programima?

ethan 18.11.2015. 20:31

evo probao sa ^0 - ništa se ne dešava

Uopce nije kombinacija tipki bitna....zapravo želim ALT+1, ali u primjeru sa interneta je bila ta kombinacija pa sam nastavio radit sa njom

rodney 18.11.2015. 20:41

Evo ja sad na brzinu instalirao ahk. Default instalacija. Dodao novu ahk skriptu na desktop, i unutra dodao kod:
Citiraj:

^c::
MsgBox You pressed Numpad1 while holding down Numpad0.
Return
Kod je c/p iz nekog tutoriala za dvije tipke, ali manje bitno.
Uglavnom, sad ne mogu ništa kopirat jer mi iskače messagebox :D.
Dvoklik na skriptu ju pokrene, nakon toga radi ctrl+c, ako ponovo "dvokliknem" :D, kaže da je skripta već pokrenuta, i da li želim zamijeniti sa trenutnom verzijom..
Hajd pokušaj neki jednostavniji event da vidimo jer ti ne radi ahk, ili nešto ne valja sa onom skriptom... Nisam se bavio s ovim programcicem otkad sam prestao igrat Dotu, ahahaha.

ethan 18.11.2015. 20:52

aha...nešto se dogodilo:

Napravio novu skriptu na destopu,
Pejstao tvoj kod, dvoklik na tu tvoju novu skriptu - i primjetio sam da se u system try pojavila ikonica H (znači, program je pokrenut....jel tako?)

Sada, selektiram sliku, stisnem Ctrl+c - i iskoči mi prozorčić sa porukom "You pressed Nimpad1 while holding down Numpad0."

Ok, ovo radi...ali šta nam to govori? da je moj kod za Photoshop krivi ili?:stoopid:

syss 18.11.2015. 21:14

pa jesi stavio između prvog i zadnjeg entry-a svoj kod?

ethan 18.11.2015. 21:16

evo, uspio sam
Vaša pomoć + google + Sveti Duh = Success!!!:chears:

Ovo je kod kojeg sam koristio:

!1:: želim sa kombinacijom Alt+1 otvorit selektirani file
clipboard = ovo mi "čisti" clipboard (ako je do tada nešto u njemu bilo)
Send, ^c ovo šalje selektirani file (sliku) u clipboard
ClipWait ;waits for the clipboard to have content
Run, "C:\Program Files\Adobe\Adobe Photoshop CC 2014\Photoshop.exe" %clipboard% ovaj dio valjda otvara Photoshop i učitava u njega clipboard (moju sliku)
Return ne znam dal ovo trebam imati, ali imam :)

Obo je genijalna stvar!!!! :chears:

EDIT:
Naravno, uopće nemam pojma da li sam si ja točno obajasnio kod ili sam potpuno zabrijao, ali radi :)
Hvala vam na pomoći...bez vas bi ziher odustao!

syss 18.11.2015. 21:24

autohotkey je majka ;)

ethan 18.11.2015. 21:29

Evo, stavio skriptu u Startup folder i sad se pokreće zajedno sa Windowsima - Genijalno!
Jedina zamjerka ove moje metode i koda je što ne funkcionira kada zaplavim više slika...jedna-po-jedna da (otvara besprijekorno svaki put), ali ako zaplavim 2 ili više - samo mi se otvori Photoshop (bez selektiranih slika)

Možda netko naiđe tko zna kako i to riješiti....ali probat ću još sa Googleom i Helpom naći odgovor

rodney 18.11.2015. 22:59

Drago mi je da napredujes.
Ako sam dobro shvatio, moras pokretat sliku po sliku sa alt + 1 i onda radi?
Dakle prvo, znak ";" se koristi kao komentar, sve iza tog znaka se ne izvrsava, pa to uvijek koristi kad dajes neke ulomke koda jer se lakse c/p skripta ;)

Code:

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.



;želim sa kombinacijom Alt+1 otvorit selektirani file
!1::

;ovo mi "čisti" clipboard (ako je do tada nešto u njemu bilo)
clipboard =

;ovo šalje selektirani file (sliku) u clipboard
Send, ^c

;waits for the clipboard to have content
ClipWait


Loop, parse, clipboard, `n, `r

    ; sljedece dvije linije odkomentirati ako zelis da te pita prije svake slike continue yes/no
    ; MsgBox, 4, , File number %A_Index% is %A_LoopField%.`n`nContinue?
    ; fMsgBox, No, break

    ;ovaj dio valjda otvara Photoshop i učitava u njega clipboard (moju sliku)
    Run, "C:\Program Files\Adobe\Adobe Photoshop CC 2014\Photoshop.exe" %A_LoopField%
   
    ; ako bude potrebno malo pauzirati izmedju poziva, mozda samo za prvi poziv da se otvori photoshop?
    ; Sleep, 5000

}

; kad nisi u nekoj funkciji, return poziva "exit"
Return

Novost je ovaj dio sa
Code:

Loop, parse, clipboard, `n, `r
    {
        ...
    }

Ti u clipboardu imaš listu imena slika, i sad ova petlja poziva onu naredbu za svako ime slike u clipboardu. Sve što se nalazi izmedju vitičastih zagrada će se izvesti onoliko puta koliko si fajlova označio, znači doći će do greške vjerojatno ako označiš nešto što nije slika. To lako isprobaš.
:beer:

syss 18.11.2015. 23:07

ja se ne bavim programiranjem da priznam odmah i ovo mi je trebalo baš za jednu specijalnu namjenu... koji je to jezik?

ethan 18.11.2015. 23:14

ajme pravi si!!

ovaj tvoj dodatak radi upravo ono što sam želio - sad mi otvara i jednu-po-jednu i u slučaju da selektiram više komada...sad je sve savršeno!

Naravno da mi sada počinju padati na pamet još neke ideje za iskoristiti ovaj super programčić....daj mi samo reci, ako poželim dodavati nove funkcije, samo nastavim pisati u istoj skripti.ahk (par entera i nastavim sa novim kodom...jel tako) - ne moram stvarati novu skriptu sa novim setom instrukcija?

Hvala ti još jednom na pomoći :chears:

rodney 18.11.2015. 23:19

Ovo je baš njihov skriptni jezik, od autohotkeya, ali ako ti trebaju takve slične jednostavne stvari bez autohotkeya možeš koristit batch skripte za win, shell za linux. Python ili slično za kompliciranije stvari. Google daje zilijune tutorijala..
npr
https://en.wikibooks.org/wiki/Windows_Batch_Scripting

http://www.freeos.com/guides/lsst/

edit:
Np, taman odgovarao sisi pa nisam vidio...

Ako zeliš još funkcija:
https://autohotkey.com/board/topic/4...-one-ahk-file/

syss 18.11.2015. 23:21

thnx ;)

Veki-os 02.01.2017. 23:27

Znam da je malo stariji topic,ne vidim potrebu otvarati novi.

Imam problem sa AHK-em,napravio sam makro u MacroCreatoru i odmah je tamo convertirao u AHK skriptu.
Služila bi za komp od staraca da stisnu jednu tipku i imaju Kodi prebačen na TV.
Skripta radi ali pokrenuti Kodi nije u fokusu.
Več sat vremena pokušavam to popraviti,sve moguče sam probao što sam našao na netu ali nikako da napravim fokus na Kodi kad se pokrene.

Ovo je skripta,ako netko zna kako to riješiti bio bih zahvalan.

; This script was created using Pulover's Macro Creator
; www.macrocreator.com

#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1


F4::
Macro1:
WinActivate, Pulover's Macro Creator ahk_class AutoHotkeyGUI
Sleep, 333
Sleep, 137
Send, {LWin Down}
Sleep, 31
Send, {p}
Sleep, 78
Click, 380, 414, 0
Sleep, 16
Click, -1180, 384, 0
Sleep, 47
WinActivate, Project ahk_class Windows.UI.Core.CoreWindow
Send, {LWin Up}
Sleep, 31
Click, 380, 384, 0
Sleep, 14
Click, -1180, 384, 0
Sleep, 50
Send, {Down}
Sleep, 68
Send, {Enter}
Sleep, 4000
Click, -600, 510, 0
Run, C:\Program Files (x86)\Kodi\Kodi.exe
Return

Bubba 02.01.2017. 23:57

Citiraj:

Autor Veki-os (Post 3005918)
Znam da je malo stariji topic,ne vidim potrebu otvarati novi.
/snip

Ne znam za ovo, ali ako kazes koju tipku zelis da stisnu, uz malo WinAPI-ja i 45 sekundi mogu ti napraviti to sto zelis... ;)

Nikky 03.01.2017. 00:00

Logično jer nisi naredio / kontrolirao da KODI dobije fokus.
Ovako će raditi ok:
Code:

...
Run, C:\Program Files (x86)\Kodi\Kodi.exe,,,OutputVarPID
  WinWait, ahk_pid %OutputVarPID%
  WinActivate, ahk_pid %OutputVarPID%
Return

Za žuntu ko u mesara:
https://autohotkey.com/docs/commands/Run.htm
https://autohotkey.com/docs/commands/WinWait.htm
https://autohotkey.com/docs/commands/WinActivate.htm

Veki-os 03.01.2017. 01:33

Citiraj:

Autor Bubba (Post 3005924)
Ne znam za ovo, ali ako kazes koju tipku zelis da stisnu, uz malo WinAPI-ja i 45 sekundi mogu ti napraviti to sto zelis... ;)

Kad si se več ljubazno ponudio trebao bih i dodatnu pomoć :D
Uz taj fokus napravio bih i da je tipka za skriptu ujedno i za vratiti se na PC monitor,odnosno da bude toggle tipka.
Neka bude F4,upload-o sam skriptu za pokrenuti Kodi(Kodi.ahk.) i skriptu za nazad na PC monitor(ToPC).
Ako se mogu te dvije skripte nekako spojiti bilo bi odlično a meni bi uštedilo par sati guglanja,isprobavanja i tonu živaca :D

Kodi skripta https://drive.google.com/open?id=0B_...GVKRGZqMU9KTUE
ToPC skripta https://drive.google.com/open?id=0B_...m5pbUFNNDkzLU0

Ta druga ToPC skripta radi OK,"samo" je treba spojiti sa prvom,ako je moguče.

Citiraj:

Autor Nikky (Post 3005926)
Logično jer nisi naredio / kontrolirao da KODI dobije fokus.
Ovako će raditi ok:
Code:

...
Run, C:\Program Files (x86)\Kodi\Kodi.exe,,,OutputVarPID
  WinWait, ahk_pid %OutputVarPID%
  WinActivate, ahk_pid %OutputVarPID%
Return

Za žuntu ko u mesara:
https://autohotkey.com/docs/commands/Run.htm
https://autohotkey.com/docs/commands/WinWait.htm
https://autohotkey.com/docs/commands/WinActivate.htm

Hvala ali u tih sat vremena dok sam pokušavao to ispraviti sam probao i to i još 100 drugih varijanti Win----- ali ne šljaka.
Stalno se vidi taskbar i moram alt-tabat da Kodi stavim u fokus.

Bubba 03.01.2017. 09:09

Citiraj:

Autor Veki-os (Post 3005941)
Kad si se več ljubazno ponudio trebao bih i dodatnu pomoć :D

Kao sto rekoh, nisam bas u tom AutoHotKey prici, ali evo ti kod pa ces mozda ti lakse skuziti sto ti treba:

Code:

#include
#include  
#include "Windows.h"

int _cdecl _tmain(
        int argc,
        TCHAR *argv[])
{
        bool toggle = 0;
        if (RegisterHotKey(
                NULL,
                1,
                MOD_NOREPEAT,
                0x73))  //https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
        {
                _tprintf(_T("Hotkey 'F4' registered, using MOD_NOREPEAT flag\n"));
        }

        MSG msg = { 0 };
        while (GetMessage(&msg, NULL, 0, 0) != 0)
        {
                if (msg.message == WM_HOTKEY)
                {
                        if (toggle) //toggled
                        {
                                toggle = FALSE;
                                ShellExecute(NULL, _T("open"), _T("notepad"), NULL, NULL, SW_SHOW);
                        }
                        else //not toggled
                        {
                                toggle = TRUE;
                                ShellExecute(NULL, _T("open"), _T("calc"), NULL, NULL, SW_SHOW);
                        }
                }
        }

        return 0;
}

Dakle, u ovom konkretnom primjeru, svaki pritisak F4 dugmeta otvarat ce Kalkulator odnosno Notepad, ovisno o tome je li "toggled" ili ne. Sad je samo na tebi koju tocno naredbu zelis pokrenuti ovisno o slucaju, pa ili sam modificiraj kod, ili reci sto zelis (predpostavljam da je jedna od njih Kodi izvrsna datoteka, a ne znam sto bi trebala biti druga, odnosno je li uopce EXE ili treba jos nekog dodatnog koda).

Nikky 03.01.2017. 12:44

@Veki-os
Eh, najlakše reći to ne šljaka, trebaš dalje tražiti rješenje. Nemam KODI da bi sad istraživao.
Sa ovim poviše si dobio da bude u fokusu (čitaj napred), slijedeće šta ti "fali" je vjerojatno full screen (tada je valjda sam na ekranu).

Po ovom > http://forum.kodi.tv/showthread.php?tid=39873
starije verzije su imale -fs command line switch, a kod novih su to izbacili.
Na istom mjestu navode da pamti zadnje korišteni "modus" prikaza.

Po ovome > https://www.google.com/#q=kodi+full+screen+key
Shortcut Key: \ prebacuje full screen <> windowed mode
Ako to radi šta ti treba na kraj rutine dodaj: Send, {\}
Po uputi bi trebalo koristiti "novu" komandu SendImput ali koliko vidim neki imaju problema sa njom ili je neznaju primjeniti kako treba.

Veki-os 03.01.2017. 14:10

Problem je bio u glupom Win 10 :fuming:

https://s20.postimg.org/6207ture5/13...1633258051.jpgupload a picture

Pošto u Win 10 nakon svičanja screena ne nestane ono sa strane kao na Win 7 ili Win 8.1 na Win 10 treba stisnuti Esc da to nestane kad se sviča screen.
Ako preko skripte pokrečem Kodi onda to "smeta" Kodi-i da bude u fokusu a kad ga ručno pokrenem s tim onda mu ne smeta :fuming:
To nisam ubacio u skriptu jer starci imaju Win 8.1 na kompu.
Kad sam ubacio Esc i stavio ono što si sinoč postao šljaka odlično :)

Hvala puno,sad samo još da riješim toggle,nažalost ovo mi baš ne pomaže Bubba,malo ču još proučit dokumentaciju od AHK.

Ono što želim je spojiti ove dvije skripte:

1. Kodi.ahk https://drive.google.com/open?id=0B_...zl5dmFFVWZtWDg skripta za svičanje screena na TV i pokretanje Kodi-a

2. ToPC https://drive.google.com/open?id=0B_...m5pbUFNNDkzLU0 skripta za svičanje screena nazad na PC

i da ih pokrečem sa istom tipkom,zasad je F4 ali nije važno koja je u primjeru jer ču je kasnije prebaciti na neku tipku na daljinskom.

Nikky 03.01.2017. 14:42

Eto, sad iz prve ruke otkrivaš šta znači programirati za različite verzije winsa, da ne kažem ekstremnije multiplatform :)
To ti je kazna šta koristiš W10 smetje.

Morati ćeš se malo prisjetiti osnova programiranja, Bubin primjer je ok i kako bi to trebalo raditi.
U osnovi trebaš definirati jednu varijablu (npr. Cijeli) koju ćeš mijenjati 0/1 ili True/False,
ovisno o vrijednosti te varijable odradit ćeš odraditi jednu ili drugu "sekciju" komandi (tvoj bivši F4 ili F5) + promijeniti vrijednost varijable (ovo napraviš odmah na početku) na "suprotnu" vrijednost.

Veki-os 03.01.2017. 14:59

But,but DX12 and other shit... :(

Ne mogu se prisjetiti osnova programiranja kad to nikad nisam učio,nažalost ovo za varijable što si mi napisao je kao da čitam kineski :D

Tražim sad neke primjere skripti koje bi bile slične mojoj pa ču valjda uspjeti nešto iskombinirati.

Bubba 03.01.2017. 14:59

Citiraj:

Autor Nikky (Post 3006091)
Morati ćeš se malo prisjetiti osnova programiranja, Bubin primjer je ok i kako bi to trebalo raditi.
U osnovi trebaš definirati jednu varijablu (npr. Cijeli) koju ćeš mijenjati 0/1 ili True/False,
ovisno o vrijednosti te varijable odradit ćeš odraditi jednu ili drugu "sekciju" komandi (tvoj bivši F4 ili F5) + promijeniti vrijednost varijable (ovo napraviš odmah na početku) na "suprotnu" vrijednost.

Pa tocno to mu je i ostavljeno u kodu. Ako postoji nekakav API koji radi to "svičanje" screena, neka slobodno posalje, nemam bas vremena sada istrazivati, a ovo mu ima 10kb, cami negdje smanjeno i bok Pero, nikakvi 3rd party ne trebas...

Nikky 03.01.2017. 15:44

Evo ga na, "nisam bio u školi kad se to učilo" > znači ne moram znati > ko bog je duvao maru iza škole :D:D

Trebaš samo paziti da ne napraviš "beskonačnu petlju bez kontrole" jer će biti ubijanja preko Task Managra ...

Veki-os 03.01.2017. 15:59

Lol,pa ne uče automeančari programiranje :D

Postavio sam pitanje na Autohotkey forumu pa če valjda netko od njih znati točno kako da to napravim.
Vama hvala na pokušaju pomoči ali ja bez podloge i ikakvog znanja programiranja mogu samo bleayati u Bubbin kod i tvoje varijable :D

Nešto znam napraviti,presložio sam u AHK-u tipke za Mele daljinski,morao sam uključiti čitanje kodova,našao sam da za to treba ova komanda #InstallKeybdHook ,napravio ove macroe ali ovo togglanje prelazi granice mojih mogučnosti :D

Nikky 03.01.2017. 16:10

Dobro, dobro, polako :D
Da si skratiš muke ostavi na dvije različite tipke "i mirna Bosna".
Ol si već "potrošio" sve botune na tom daljincu ?

Veki-os 03.01.2017. 16:33

A dvije tipke če i biti ako mi na onom forumu ne odgovore.
Ima još botuna,iza je cijela tipkovnica :D
https://s20.postimg.org/6bcyb4n59/it...56_7124494.jpg


Sva vremena su GMT +2. Sada je 14:09.

Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 1999-2023 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger