AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

There is a solution to write scripts for FireFox
Goto page 1, 2, 3, 4, 5, 6  Next
 
Reply to topic    AutoHotkey Community Forum Index -> Ask for Help
View previous topic :: View next topic  
Author Message
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Fri Jan 08, 2010 1:44 pm    Post subject: There is a solution to write scripts for FireFox Reply with quote

AutoHotkey Scripts to Automate Firefox

This post is just to explain the principles I have used : I'll write an "user manual" (a big job) only if a sufficient number of people ask for it.

Background

Previous Attempts - iMacros

I have before AutoHotkey tried "iMacros for Firefox" but the problem is that it is not a complete system : they give some instructions to access the content of the screen, wait for it or fill fields but to do loop, if then else, or string functions you need to go back to the javascript (run by the built-in Firefox machine) that called their instructions : so many lines of code in js.

"iMacros for Firefox" is the free-ware low-end of a line of commercial products. As they say "We hope you'll enjoy iMacros so much that you'll consider upgrading to the business editions ..." There is no much hope of big improvement : they have to earn their living with the paid for products.

For us, the interest of "iMacros" is their documentation and their demos that may give ideas. Also the URL against which the demos are run are simple and with direct access : this is easier to post than the same problem in the 5th screen of an application with userid and password !

Compared with AutoHotkey, the interface with FireFox is far better because it is a FireFox extension but the supporting language is far worst !

Problems with Firefox & AutoHotkey

I have soon discovered that AutoHotkey cannot read the content of a Firefox screen except the title line : AutoHotkey intercept the Windows interface but FireFox, which runs on multiple OS has its own (common for the various OS) interface to screen. So many of AutoHotkey screen functions do not work.
The keyboard interface, at least the "Send, keys" command works, the mouse interface also.

The Solution


This seems very limited and not usable but there is a solution : The FireFox short-cuts.

AutoHotkey script can type them to FireFox with "Send, keys" e.g. "Send, {CTRLDOWN}l{CTRLUP}" selects the Location Bar (e.g. the URL of the page shown by FireFox) and with "Send, {CTRLDOWN}c{CTRLUP}" you have access to it in the clipboard common to AutoHotkey and FireFox.

With the sequence ctrl+u (show the source screen), ctrl+a (select all), ctrl+c (copy to clipboard), AutoHotkey command (it works !) to close source screen : you have the htlm source of the page in the clipboard.

With ctrl+f (search in text) + typing the string_to_search in the status bar that open with the cursor in it + {ESC} the string is selected and you can with "enter" activate the link under it or with "tab" go to the next input area.

The list of standard short-cuts is at :
http://support.mozilla.com/en-US/kb/Keyboard+shortcuts

The Firefox Keyconfig extenshion - More Functions

You need also other short-cuts, they can be coded with the Keyconfig extension see :The idea is that, if you need a function that does not work or exist in AutoHotkey or to extract some information from FireFox, you use a short-cuts that does it for you, you call it with "Send, keys" command.

In most of the cases the input to and output from the short-cuts are the clipboard.

To write a short-cut, you need to know very well the coding of FireFox to put together some already existing functions of it : "Dorando" the author of Keyconfig is a very helpful expert, personally I am just able to ask, in the forum, for a short-cut that does what I wish to have !

Development of the Keyconfig shortcuts for AutoHottkey


To ease the understanding of my reasons, I'll do an historical presentation.

1. The initial Shortcuts

first batch of short-cuts :

My experiences have shown that :

- clicking at X and Y coordinates was not reliable because too often the application move slightly the components of the screen to make it better looking. If you have several PC with different sizes of screen, you may also have problems.

- navigating by tabs from a corner of the screen was not reliable because too often the application added or subtracted links or areas to click.

So I used the context with the "search in text" short-cut to move by tab from an nearby explanatory text. This text should be unique on the screen to ease the coding of the script. E.g. for login screen often also used for registration, you find "user" twice (in both parts), password and password forgotten (or lost or equivalent) in the login area, password and repeat password in registration area : I searched for "password forgotten" then tabed back to user input area, entered it, then tab to normal password area.

I obtained 3 short-cuts :

1-1. When executed, puts "NotBusy" in the clipboard if the page has finished to load else "Busy". I have built around it an AutoHotkey function that loops with an 0.5 seconds "Sleep" and return when loading has finished or exit if time out.

1-2. Checks if ctrl+f has found the string and puts "found" in the clipboard else "not_found". I have built around it an AutoHotkey function that send ctrl+f, then the string_to_search, then the 2nd short-cut and exit if "not_found", then {ESC} and return leaving the string selected and you can with "enter" activate the link under it or with "tab" go to the next input area.

1-3. Puts the source in the clipboard. It is equivalent (but easier to synchronize with AutoHotkey) to the sequence ctrl+u, ctrl+a, ctrl+c, AutoHotkey command to close source screen. I have built around it an AutoHotkey function that return the source. Then I extract the information I need with a sub-pattern of RegExMatch. Or do an other string search function to verify if I am on the right screen.

With this you can write and run some scripts without knowledge of html language : you need just your eyes to see the text to select.

Limitations

The limitations are :

- Not all application support navigation by tab.

- "false texts" : they are not in character mode in the source of the page, they are drawn on an image. In this case they are not found with ctrl+f.

- national characters when you are abroad. E.g. in a French application the button to disconnect is often called "Déconnexion" (the French word for the action of disconnecting where the 2nd character is "e with acute accent"). This word was found by ctrl+f without problem on a French PC with French Windows and French FireFox but was not found on a English PC with English Windows and English FireFox : I don't know the reason, nevertheless "e with acute accent" was shown on the screen...

2. The Second Shortcuts

Second batch of short-cuts :

2.1.
'Is this possible to define a new function "find in source and click" that has some similarities to ctrl+f but works on the source'?

The answer of the author of Keyconfig was 'it does exceed my abilities in multiple ways'. I said : 'Something similar is done by the "tag" command of iMacros for Firefox' The author : 'what iMacros does seems to translate the input to "XPath"' FireFox function and gave me a shortcut .

The input parameter is put in the clipboard before short-cut : he said:

Quote:
You can test some on the iMacros demo page

http://www.iopus.com/imacros/demo/v6/pos/index.htm

by copying one of the following to your clipboard:
    nigelle;2;//a[contains(text(),"Click to open this page")]
    nigelle;1;//a[@href="page1.htm"]
    nigelle;1;//input[@value="your E-mail here"]
The format is
    identifier;occurrence;XPath
while for XPath
    //tag[@attribute="value"] or
    //tag[contains(text(),"text content")]
should cover many cases.'


The clipboard after short-cut contains "Found" (success) or "NotFound" (failure to find) or the text of the internal error in FireFox (generally bad format of the input)...

With this you can activate a link or put the cursor in an input area : this is very powerful, it can do the same as ctrl+f and far more.

For documentation on "XPath" see :With this you can write and run many scripts but with knowledge of html language and format of Xpath.

2.2. Maximizes the window (the AutoHotkey function does not works except in the "run" command). Use this when you don't need to see the background.
2.3. Restores the window to the non-maximized state, I have not used it because often it gives a size of 1x1 inch on my 20" monitor !

3. The Third Shortcuts

Third batch of short-cuts :

3.1. Puts the source of the DOM in clipboard
With an application that modified the content of the window with Javascript, I discovered that there are 2 sources defined in FireFox;

a) source1 the classical source shown by Ctrl+u on a screen with the title : "Source of : http://url_with_parameters - Mozilla Firefox". Source1 is not modified by Javascript and is given by 1.3.

b) source2 shown by selecting an area on a screen, right click and choosing "source code of the selection" : the title of the screen is :
"DOM source of the selection - Mozilla Firefox". Normally it shows from the <div> before the selection to the </div> after it. It works also for the full page after ctrl+a .

The present short-cut puts the source of the DOM (of the whole window) in clipboard, I have built an AutoHotkey function that return it.

3.2. Set the window to 3 quarters of the size of the screen. Use this when you need to see the background.

4. The Final Shortcuts

fourth batch of short-cuts

4.1. URL in clipboard
It is equivalent to the sequence ctrl+l, ctrl+c but without the problem of synchronizing the 2 short-cuts.

Known limitations

- The Xpath short-cut does not start a Flash application. As flash simulation is low in my priority list, I have not tested the methods that Imacros uses in this case : clicking at X and Y coordinates when the image of the Flash application does not move or ImageSearch function and click on the found coordinates. I assume they work.

- ControlSend command does not works properly, only Send does the job : you are forced to keep the focus on the FireFox screen and you cannot run another thing during your script, this is annoying when its duration is 10 minutes or more !
I have tried to change, in one of my script that worked fine and in all my functions, "send, keys" to "ControlSend,, keys, %Wtit%" where %Wtit% is the wintittle field corresponding to the application.

a) First I run it keeping the focus on the FireFox screen to see what occurred, the short-cuts did their job but 'Send, "my_userid" ' (after an Xpath call to put the cursor in the userid input area) entered nothing.

I changed this to
Code:
clipboard := "my_userid"
ControlSend,, {CTRLDOWN}v{CTRLUP}, %Wtit%
and it worked.

b) Then I tried to run this corrected script, switching to an other window then going back to see what occurred : the script was blocked : the Xpath has put the cursor in the userid area, nothing was entered in this field and the next Xpath to the password has time outed (without putting any result in the clipboard) after more than 40 seconds when normally it takes from 0.3 to 1s to execute with "send, keys" ...

I am an user and not a developer, I cannot give any reason or cure to this behaviour. FireFox ? Its javascript or XUL machine ? AutoHotkey ?

With the fore mentioned limitations, I run happily a few dozens of scripts.

As I am lazy, and does not wish to write more than 3 times the same group of lines, I have many more functions than described here...

So I ask again the question : Do you need that I write an "user manual" ?

This is a big job, I'll not start it without strong request.
AutoHotkey Scripts to Automate Firefox

This post is just to explain the principles I have used : I'll write an "user manual" (a big job) only if a sufficient number of people ask for it.

Background

Previous Attempts - iMacros

I have before AutoHotkey tried "iMacros for Firefox" but the problem is that it is not a complete system : they give some instructions to access the content of the screen, wait for it or fill fields but to do loop, if then else, or string functions you need to go back to the javascript (run by the built-in Firefox machine) that called their instructions : so many lines of code in js.

"iMacros for Firefox" is the free-ware low-end of a line of commercial products. As they say "We hope you'll enjoy iMacros so much that you'll consider upgrading to the business editions ..." There is no much hope of big improvement : they have to earn their living with the paid for products.

For us, the interest of "iMacros" is their documentation and their demos that may give ideas. Also the URL against which the demos are run are simple and with direct access : this is easier to post than the same problem in the 5th screen of an application with userid and password !

Compared with AutoHotkey, the interface with FireFox is far better because it is a FireFox extension but the supporting language is far worst !

Problems with Firefox & AutoHotkey

I have soon discovered that AutoHotkey cannot read the content of a Firefox screen except the title line : AutoHotkey intercept the Windows interface but FireFox, which runs on multiple OS has its own (common for the various OS) interface to screen. So many of AutoHotkey screen functions do not work.
The keyboard interface, at least the "Send, keys" command works, the mouse interface also.

The Solution


This seems very limited and not usable but there is a solution : The FireFox short-cuts.

AutoHotkey script can type them to FireFox with "Send, keys" e.g. "Send, {CTRLDOWN}l{CTRLUP}" selects the Location Bar (e.g. the URL of the page shown by FireFox) and with "Send, {CTRLDOWN}c{CTRLUP}" you have access to it in the clipboard common to AutoHotkey and FireFox.

With the sequence ctrl+u (show the source screen), ctrl+a (select all), ctrl+c (copy to clipboard), AutoHotkey command (it works !) to close source screen : you have the htlm source of the page in the clipboard.

With ctrl+f (search in text) + typing the string_to_search in the status bar that open with the cursor in it + {ESC} the string is selected and you can with "enter" activate the link under it or with "tab" go to the next input area.

The list of standard short-cuts is at :
http://support.mozilla.com/en-US/kb/Keyboard+shortcuts

The Firefox Keyconfig extenshion - More Functions

You need also other short-cuts, they can be coded with the Keyconfig extension see :The idea is that, if you need a function that does not work or exist in AutoHotkey or to extract some information from FireFox, you use a short-cuts that does it for you, you call it with "Send, keys" command.

In most of the cases the input to and output from the short-cuts are the clipboard.

To write a short-cut, you need to know very well the coding of FireFox to put together some already existing functions of it : "Dorando" the author of Keyconfig is a very helpful expert, personally I am just able to ask, in the forum, for a short-cut that does what I wish to have !

Development of the Keyconfig shortcuts for AutoHottkey


To ease the understanding of my reasons, I'll do an historical presentation.

1. The initial Shortcuts

first batch of short-cuts :

My experiences have shown that :

- clicking at X and Y coordinates was not reliable because too often the application move slightly the components of the screen to make it better looking. If you have several PC with different sizes of screen, you may also have problems.

- navigating by tabs from a corner of the screen was not reliable because too often the application added or subtracted links or areas to click.

So I used the context with the "search in text" short-cut to move by tab from an nearby explanatory text. This text should be unique on the screen to ease the coding of the script. E.g. for login screen often also used for registration, you find "user" twice (in both parts), password and password forgotten (or lost or equivalent) in the login area, password and repeat password in registration area : I searched for "password forgotten" then tabed back to user input area, entered it, then tab to normal password area.

I obtained 3 short-cuts :

1-1. When executed, puts "NotBusy" in the clipboard if the page has finished to load else "Busy". I have built around it an AutoHotkey function that loops with an 0.5 seconds "Sleep" and return when loading has finished or exit if time out.

1-2. Checks if ctrl+f has found the string and puts "found" in the clipboard else "not_found". I have built around it an AutoHotkey function that send ctrl+f, then the string_to_search, then the 2nd short-cut and exit if "not_found", then {ESC} and return leaving the string selected and you can with "enter" activate the link under it or with "tab" go to the next input area.

1-3. Puts the source in the clipboard. It is equivalent (but easier to synchronize with AutoHotkey) to the sequence ctrl+u, ctrl+a, ctrl+c, AutoHotkey command to close source screen. I have built around it an AutoHotkey function that return the source. Then I extract the information I need with a sub-pattern of RegExMatch. Or do an other string search function to verify if I am on the right screen.

With this you can write and run some scripts without knowledge of html language : you need just your eyes to see the text to select.

Limitations

The limitations are :

- Not all application support navigation by tab.

- "false texts" : they are not in character mode in the source of the page, they are drawn on an image. In this case they are not found with ctrl+f.

- national characters when you are abroad. E.g. in a French application the button to disconnect is often called "Déconnexion" (the French word for the action of disconnecting where the 2nd character is "e with acute accent"). This word was found by ctrl+f without problem on a French PC with French Windows and French FireFox but was not found on a English PC with English Windows and English FireFox : I don't know the reason, nevertheless "e with acute accent" was shown on the screen...

2. The Second Shortcuts

Second batch of short-cuts :

2.1.
'Is this possible to define a new function "find in source and click" that has some similarities to ctrl+f but works on the source'?

The answer of the author of Keyconfig was 'it does exceed my abilities in multiple ways'. I said : 'Something similar is done by the "tag" command of iMacros for Firefox' The author : 'what iMacros does seems to translate the input to "XPath"' FireFox function and gave me a shortcut .

The input parameter is put in the clipboard before short-cut : he said:

Quote:
You can test some on the iMacros demo page

http://www.iopus.com/imacros/demo/v6/pos/index.htm

by copying one of the following to your clipboard:
    nigelle;2;//a[contains(text(),"Click to open this page")]
    nigelle;1;//a[@href="page1.htm"]
    nigelle;1;//input[@value="your E-mail here"]
The format is
    identifier;occurrence;XPath
while for XPath
    //tag[@attribute="value"] or
    //tag[contains(text(),"text content")]
should cover many cases.'


The clipboard after short-cut contains "Found" (success) or "NotFound" (failure to find) or the text of the internal error in FireFox (generally bad format of the input)...

With this you can activate a link or put the cursor in an input area : this is very powerful, it can do the same as ctrl+f and far more.

For documentation on "XPath" see :With this you can write and run many scripts but with knowledge of html language and format of Xpath.

2.2. Maximizes the window (the AutoHotkey function does not works except in the "run" command). Use this when you don't need to see the background.
2.3. Restores the window to the non-maximized state, I have not used it because often it gives a size of 1x1 inch on my 20" monitor !

3. The Third Shortcuts

Third batch of short-cuts :

3.1. Puts the source of the DOM in clipboard
With an application that modified the content of the window with Javascript, I discovered that there are 2 sources defined in FireFox;

a) source1 the classical source shown by Ctrl+u on a screen with the title : "Source of : http://url_with_parameters - Mozilla Firefox". Source1 is not modified by Javascript and is given by 1.3.

b) source2 shown by selecting an area on a screen, right click and choosing "source code of the selection" : the title of the screen is :
"DOM source of the selection - Mozilla Firefox". Normally it shows from the <div> before the selection to the </div> after it. It works also for the full page after ctrl+a .

The present short-cut puts the source of the DOM (of the whole window) in clipboard, I have built an AutoHotkey function that return it.

3.2. Set the window to 3 quarters of the size of the screen. Use this when you need to see the background.

4. The Final Shortcuts

fourth batch of short-cuts

4.1. URL in clipboard
It is equivalent to the sequence ctrl+l, ctrl+c but without the problem of synchronizing the 2 short-cuts.

Known limitations

- The Xpath short-cut does not start a Flash application. As flash simulation is low in my priority list, I have not tested the methods that Imacros uses in this case : clicking at X and Y coordinates when the image of the Flash application does not move or ImageSearch function and click on the found coordinates. I assume they work.

- ControlSend command does not works properly, only Send does the job : you are forced to keep the focus on the FireFox screen and you cannot run another thing during your script, this is annoying when its duration is 10 minutes or more !
I have tried to change, in one of my script that worked fine and in all my functions, "send, keys" to "ControlSend,, keys, %Wtit%" where %Wtit% is the wintittle field corresponding to the application.

a) First I run it keeping the focus on the FireFox screen to see what occurred, the short-cuts did their job but 'Send, "my_userid" ' (after an Xpath call to put the cursor in the userid input area) entered nothing.

I changed this to
Code:
clipboard := "my_userid"
ControlSend,, {CTRLDOWN}v{CTRLUP}, %Wtit%
and it worked.

b) Then I tried to run this corrected script, switching to an other window then going back to see what occurred : the script was blocked : the Xpath has put the cursor in the userid area, nothing was entered in this field and the next Xpath to the password has time outed (without putting any result in the clipboard) after more than 40 seconds when normally it takes from 0.3 to 1s to execute with "send, keys" ...

I am an user and not a developer, I cannot give any reason or cure to this behaviour. FireFox ? Its javascript or XUL machine ? AutoHotkey ?

With the fore mentioned limitations, I run happily a few dozens of scripts.

As I am lazy, and does not wish to write more than 3 times the same group of lines, I have many more functions than described here...

So I ask again the question : Do you need that I write an "user manual" ?

This is a big job, I'll not start it without strong request.

P. S.

The format of the original post has been improved by Markup done by Michael@oz .

There is now a Wiki, see :
http://www.autohotkey.com/wiki/index.php?title=Automate_FireFox
structure given by hugov .


Last edited by nigelle on Mon Feb 08, 2010 5:47 pm; edited 1 time in total
Back to top
View user's profile Send private message
SoLong&Thx4AllTheFish



Joined: 27 May 2007
Posts: 4999

PostPosted: Fri Jan 08, 2010 2:30 pm    Post subject: Reply with quote

I'm sure some members are interested in automating firefox, but IE seems to be the favourite for automation. I haven't read your post completely yet, but I do wonder how does (or would) your solution compare to using MozRepl http://www.autohotkey.com/forum/viewtopic.php?t=46974 perhaps you can explain?
_________________
AHK Wiki FAQ
TF : Text files & strings lib, TF Forum
Back to top
View user's profile Send private message
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Fri Jan 08, 2010 3:34 pm    Post subject: Reply with quote

To hugov
I have gone to the referenced post and also to the posts it referenced : Both require the MozRepl Firefox extension to be installed
1)
http://search.cpan.org/~corion/WWW-Mechanize-Firefox-0.15/
Seems to need high knowledge of Javascript and XUL, does not seems to interface with AHK and its powerful language...
2)
http://english.documentation.ff-au3.thorsten-willert.de/
The functions defined seem similar to what my(?) short-cuts plus my AHK functions do. But it does not seems to interface with AHK and its powerful language...

Many users thinks that there are too many security problems in IE and that FireFox is better. My solution needs Keyconfig extension (that has also other uses) + AHK and uses its powerful language...
Back to top
View user's profile Send private message
fsnow55



Joined: 08 Jun 2006
Posts: 36

PostPosted: Fri Jan 08, 2010 7:31 pm    Post subject: Reply with quote

Nigelle, thanks. I think AHK complements FF usage nicely.

BTW, I use a bookmarklet to duplicate a tab, i.e. open up a new tab with the last active URL:
javascript:dtTim=new%20Date();void(window.open(location.href,'w'+dtTim.getTime()))


I can't figure how to open up a new FF window (with last active URL) instead,
since my default setup is to open new windows in tab (which I want to keep, most of the time).

Anyway, here's a simple solution via AHK, making use of FF shortcut keys
(note that ^l and F6 do the same function i.e. to select the location, but I have to use F6 later to get it to work (don't know why 2nd ^l don't work))

#f:: ;;open new Firefox window with present url
; original #f is for Windows Explorer Search
{
send ^l ; select the location
send ^c ; copy the URL
send ^n ; open new window (not tab)
WinWaitActive, Mozilla
WinActivate, Mozilla
send {F6} ; select the location in the new window
send ^v ; replace with last URL
send, {Enter}
return
}


fsnow55
Back to top
View user's profile Send private message
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Fri Jan 15, 2010 1:55 pm    Post subject: Reply with quote

I need to give more clarifications.

My scripts are not generally definitions of hot keys but automation of applications : login, going from screens to (half a dozen) screens, extracting data from them or putting data into them, log off. This need synchronization : AutoHotkey should wait till the end of loading of the new window in FireFox, till Firefox has put some information (source, URL, etc.) in the clipboard before processing it, etc. because there is a mixing of Firefox (=short-cuts) and AutoHotkey instructions. In the definition of hot key there are practically only Firefox (=short-cuts) instructions and they execute presently in the order in which they have been stacked : this is easier to do.

To use my method you should :
1) install Keyconfig extension in the Firefox profile you plan to use.
2) define in Keyconfig the special short-cuts.
3) after this you have only to use AutoHotkey language instructions in your script.
E.g. "send, keys_of_the _short-cut", call to the functions you or I have defined, any other instructions.

As nobody is asking for, I'll not write an "user manual".

To fsnow55
Without the short-cuts it is difficult to do something with Firefox : we agree.
With my short-cuts you will need less lines because some of them chain actions.
Do you know that there is an other way to reach a Firefox (if it is your default browser) window knowing its URL ? It is the "run, URL, " AHK instruction see documentation for the exact format. For me, it opens in a new window but this may depend of the options...
I don't like {F6} because its meaning may depend of where you are : in the official Firefox list it is defined in 2 places !
Beware of WinWait_... instructions, it just wait for the appearance of the title line not for the complete loading of the html page.
I have a short text but in French (I have written it for my children) that explain how to create or modify a short-cut in Keyconfig and gives the codes to enter. Are you interested ?
Back to top
View user's profile Send private message
SoLong&Thx4AllTheFish



Joined: 27 May 2007
Posts: 4999

PostPosted: Fri Jan 15, 2010 4:27 pm    Post subject: Reply with quote

The drawback of your solution is that it is hard to exchange scripts between users as you would have to make sure the same shortcut performs the same function. But interesting concept none the less, perhaps I'll have a look at keyconfig and see how that works.
_________________
AHK Wiki FAQ
TF : Text files & strings lib, TF Forum
Back to top
View user's profile Send private message
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Fri Jan 15, 2010 6:57 pm    Post subject: Reply with quote

I already exchange scripts with my children...
But OK this need standardization and more than you say : I have sent to my children :
1) For each short-cut, the code used by FF and the combination of letters to use (generally it has a meaning).
2) My library of functions "commonX.ahk" (X is a version number, I have an "#Include %A_ScriptDir%\commonX.ahk" at the top of my scripts). Each function call its corresponding short-cut using the combination defined in 1). There are also defined global variables to pass some data from one function to the others or from the script to the functions.
3) Some scripts, but they can also write their ones.
Back to top
View user's profile Send private message
tim1
Guest





PostPosted: Sun Jan 17, 2010 10:36 pm    Post subject: Reply with quote

At work we had good success with the free iMacros Firefox (its open source, too). So unless you need the Flash or Image Recognition features of their PRO Edition (we don't!) the free version works very well for us.

iMacros for Firefox supports JavaScript Macros (Scripting)
JavaScript supports Java via LiveConnect

Therefore: You can write powerful macros with iMacros for Firefox. Have a look at this one: http://forum.iopus.com/viewtopic.php?f=11&t=7644&p=22727#p22731

Tim
Back to top
a_h_k



Joined: 02 Feb 2008
Posts: 626

PostPosted: Mon Jan 18, 2010 3:00 pm    Post subject: Reply with quote

nigelle wrote:
ControlSend command does not works properly, only Send does the job : you are forced to keep the focus on the FireFox screen and you cannot run another thing during your script, this is annoying when its duration is 10 minutes or more !

Just an idea Idea .. might work?: Put Firefox in an "virtual desktop" screen --> that way Firefox can be always active (& using Send) even though can't see it ("hidden" in an its-own virtual desktop)

nigelle wrote:
I have a short text but in French (I have written it for my children) that explain how to create or modify a short-cut in Keyconfig and gives the codes to enter. Are you interested?

Yes, please!. I've had keyconfig for "ages" but have never understand even how to change the hotkeys via it!! Embarassed

nigelle wrote:
My library of functions "commonX.ahk"

Could you share this libray here? Very Happy


Last edited by a_h_k on Wed Jan 20, 2010 9:49 am; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Mon Jan 18, 2010 9:12 pm    Post subject: Reply with quote

To a_h_k
Where can I find documentation on "virtual desktop" : I know nothing about it.
"short text" sent by PM.
To use "commonX.ahk" you need a documentation on what do the functions that I have not written, the functions give messages in French that I should localize or at least translate in English. That is a big job !
Are there interested people in sufficient number ?
Back to top
View user's profile Send private message
Michael@Oz



Joined: 08 Nov 2009
Posts: 233
Location: Canberra Oz

PostPosted: Tue Jan 19, 2010 3:58 am    Post subject: Reply with quote

Quote:
Are there interested people in sufficient number ?

+1 YYYEEESSS Very Happy

Even without the translation would be useful, I've been looking for a good AHK FF method for a while now.
Back to top
View user's profile Send private message
a_h_k



Joined: 02 Feb 2008
Posts: 626

PostPosted: Tue Jan 19, 2010 5:30 am    Post subject: Reply with quote

nigelle wrote:
Where can I find documentation on "virtual desktop"
Try Desk IllusionVery Happy
nigelle wrote:
"short text" sent by PM
Eh? I did not receive no PM?Confused
nigelle wrote:
To use "commonX.ahk" you need a documentation on what do the functions that I have not written, the functions give messages in French that I should localize or at least translate in English. That is a big job !
Maybe you could share it here .. and ahk (community) can translate it??Wink
Back to top
View user's profile Send private message Visit poster's website
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Tue Jan 19, 2010 11:11 am    Post subject: Reply with quote

Desk illusion
Not too much information on the link given. Proposed site for download is in Russia : that may be a dangerous file : trojan, virus or other malware . I have not dared to download it !
Have you used it ?

What are your need ?
1) short text that explain how to create or modify a short-cut in Keyconfig and gives the codes to enter. The part to translate is around 10 lines that may be done rapidly.
2) what the functions do probably 100 to 200 lines.
3) documentation (100 lines) on the format of input to the Xpath function implemented in FF. Do you need this or do you have already knowledge of it ?
4) 1 or 2 examples of scripts e.g. to logon to the AHK forum and go to it (to be written) ? Probably easy with my experience and useful for you to to start.

What are your priorities ?
a) short text as is (French).
b) short text translated and re-formatted with "Code" to forum standard.
c) "commonX.ahk" as is (French).
d) "commonX.ahk" translated.
e) what the functions do.
f) format of input to the Xpath function.
g) examples of scripts.
Please give me the order for posting them as a string, e.g.
a)c)e)b)g)f)d) most important first...
Back to top
View user's profile Send private message
a_h_k



Joined: 02 Feb 2008
Posts: 626

PostPosted: Wed Jan 20, 2010 9:37 am    Post subject: Reply with quote

nigelle wrote:
Desk illusion
Not too much information on the link given. Proposed site for download is in Russia : that may be a dangerous file : trojan, virus or other malware . I have not dared to download it !
Have you used it ?

Intenet wrote:
Microdesk comes with a big amount of utilities with wich you can easily configure your program.

Note: Some antivirus and antispyware programs flag ... as being infected/malware, although the application is perfectly safe and does not pose a threat to your system. This is called a 'false positive'. The term false positive is used when antivirus software wrongly classifies an innocuous ( inoffensive ) file as a virus. The incorrect detection may be due to heuristics or to an incorrect virus signature in a database. [Similar problems can occur with antitrojan or antispyware software

Microdesk installation package is prepared to be downloaded from our fast download servers. It is chcecked for possible viruses and is proven to be 100% clean and safe. Various leading antiviruses have been used to test Microdesk, if it contains any viruses. No infections have been found and downloading Microdesk is completelly problem free because of that reason. Our experts on malware detection tested Microdesk with various spyware and malware detection programs, including fyxm.net custom malware and spyware detection, and absolutelly no malware or spyware was found in Microdesk
I've used it, & works goodly. However my anti-virus does says its "Trojan horse Generic11.BKSP", which is either true or a false positive
So far it hasn't don't anything "abnormal" on my pc, didn't create any "extra" files or modify any files .. but who knows it may in registry a secretive keylogger or something!?
But you may use an older "safe" version here (less features)
nigelle wrote:
What are your need ?
1) short text that explain how to create or modify a short-cut in Keyconfig and gives the codes to enter. The part to translate is around 10 lines that may be done rapidly.
2) what the functions do probably 100 to 200 lines.
3) documentation (100 lines) on the format of input to the Xpath function implemented in FF. Do you need this or do you have already knowledge of it ?
4) 1 or 2 examples of scripts e.g. to logon to the AHK forum and go to it (to be written) ? Probably easy with my experience and useful for you to to start
Yes, that would be good Smile

I'm a newbie concerning firefox scripting/shortcutting, and want to start do some scripting for it
nigelle wrote:
What are your priorities ?
a) short text as is (French).
b) short text translated and re-formatted with "Code" to forum standard.
c) "commonX.ahk" as is (French).
d) "commonX.ahk" translated.
e) what the functions do.
f) format of input to the Xpath function.
g) examples of scripts.
Please give me the order for posting them as a string, e.g.
a)c)e)b)g)f)d) most important first...
My priority are: a --> g --> c/e --> f --> b/d
Back to top
View user's profile Send private message Visit poster's website
nigelle



Joined: 26 Sep 2008
Posts: 82
Location: France

PostPosted: Fri Jan 22, 2010 12:53 pm    Post subject: Reply with quote

g) examples of scripts.
1) AHKlogA.ahk log your user-id to AHK forum using the ctrl+F to select a text then navigate by tab except to check the check-box where it use Xpath because I have not found an other solution to click it. There ample comments to explain the use of functions because the text e) what the functions do does not yet exist.
Code:

Run, www.autohotkey.com/forum/login.php,Max ; i.e. any URL can be launched.
#Include %A_ScriptDir%\commonB.ahk ; my library of functions + variables initialization
;deb := A_Now ; start time used by dur(deb) at the bottom of script
user := "abcdef" ; change to your user name
pass := "ghijklm" ; change to your password
fnl = %logdir%AHKforum%A_YDay%.log ;normal log file
FileAppend, %A_Now% **** %A_ScriptName% `n, %fnl%
;fnErr = %logdir%Err.log ; error log file
wher := "AHK login screen" ; where we are
rc := fini() ; wait till loading FINIshed, if timeout exit, rc=elapsed time
rc := versourc("AutoHotkey Community Forum") ; VERify that SOURCe include the argument i.e. that we are on an AHK forum screen
; See also other VERify functions : vertit(x) for title, verURL(x) for URL
IfNotInString, source, >Log in<  ; source has already been initialized by versource function, ">Log in<" is in the line source defining login button
{
   ster := wher " * already logged to an AHK forum screen" ; error message
   rc := err1(ster,fnErr) ; process the error : log it and exit
}
rc := slect("forgot my password") ; SeLECT the argument if found else exit
Sleep, 500
Send, {SHIFTDOWN}{TAB}{TAB}{TAB}{TAB}{SHIFTUP}%user%{TAB}
Sleep, 500
Send, %pass%
Sleep, 500
; sorry to use Xpath : a tab bring me to caret position x=4 y=151 but how to translate this to the cursor position 818 471 for click instruction ?
rc := nxpath("nigelle;1;//input[@name='autologin']") ; checkbox "Log me on automatically each visit"
; format of nxpath is identifier;occurrence;XPath while for XPath //tag[@attribute='value'] or //tag[contains(text(),'text content')] which does the
; equivalent of ctrl+F should cover many cases. Xpath support ' and " as string delimiters. identifier "nigelle" is a place holder the same as in
; shortcut * "1" means occurence of rank 1 * "input"  the name of the html tag * "name" the attribute * "autologin" its value * the tag to click on
;is defined in source line below
;<td colspan="2"><span class="gen">Log me on automatically each visit: <input name="autologin" type="checkbox"></span></td>
Random, rand, 900, 1500 ; random sleep gives more realistic simulation
Sleep, %rand%
Send, {ENTER}
wher := "AHK forum " ; where we are
rc := fini()
rc := versourc("AutoHotkey Community Forum") ; we are on an AHK forum screen
IfNotInString, source, >Log out [  ;  ">Log out [" is in the line source defining logout button
{
   ster := wher " * Not logged " ; error message
   rc := err1(ster,fnErr) ; process the error : log it and exit
}
st := "AHK forum loged `n " ; success message with end of line
FileAppend, %st%, %fnl% ; log success message
rc := Dur(deb) ; log DURation of script
exit ; end of script

2) AHKlogB.ahk does the same thing but using the Xpah function to select a tag in the DOM and click on it.
Code:

Run, www.autohotkey.com/forum/login.php,Max ; i.e. any URL can be launched.
#Include %A_ScriptDir%\commonB.ahk ; my library of functions + variables initialization
;deb := A_Now ; start time used by dur(deb) at the bottom
user := "abcdef" ; change to your user name
pass := "ghijkl" ; change to your password
fnl = %logdir%AHKforum%A_YDay%.log ;normal log file
FileAppend, %A_Now% **** %A_ScriptName% `n, %fnl%
;fnErr = %logdir%Err.log ; error log file
wher := "AHK login screen" ; where we are
rc := fini() ; wait till loading FINIshed, if timeout exit, rc=elapsed time
rc := versourc("AutoHotkey Community Forum") ; VERify that SOURCe include the argument i.e. that we are on an AHK forum screen
IfNotInString, source, >Log in<  ; source has already been initialized by versource function, ">Log in<" is in the line source defining login button
{
   ster := wher " * already logged to an AHK forum screen" ; error message
   rc := err1(ster,fnErr) ; process the error : log it and exit
}
rc := nxpath("nigelle;1;//input[@name='username']") ; move to start of username field
; format of nxpath is identifier;occurrence;XPath while for XPath //tag[@attribute='value'] or //tag[contains(text(),'text content')] which does the
; equivalent of ctrl+F should cover many cases. Xpath support ' and " as string delimiters. identifier "nigelle" is a place holder the same as in
; shortcut * "1" means occurence of rank 1 * "input"  the name of the html tag * "name" the attribute * "username" its value * the tag to click on
;is defined in source line below
;<input class="post" name="username" size="25" maxlength="40" value="" type="text">
Sleep, 500
Send, %user%
rc := nxpath("nigelle;1;//input[@name='password']") ; password field
;<input class="post" name="password" size="25" maxlength="32" type="password">
Sleep, 500
Send, %pass%
rc := nxpath("nigelle;1;//input[@name='autologin']") ; checkbox "Log me on automatically each visit"
;<td colspan="2"><span class="gen">Log me on automatically each visit: <input name="autologin" type="checkbox"></span></td>
Random, rand, 900, 1500 ; random sleep gives more realistic simulation
Sleep, %rand%
Send, {ENTER}
wher := "AHK forum" ; where we are
rc := fini()
rc := versourc("AutoHotkey Community Forum") ; we are on an AHK forum screen
IfNotInString, source, >Log out [  ;  ">Log out [" is in the line source defining logout button
{
   ster := wher " * Not logged " ; error message
   rc := err1(ster,fnErr) ; process the error : log it and exit
}
st := "AHK forum loged `n " ; success message with end of line
FileAppend, %st%, %fnl% ; log success message
rc := Dur(deb) ; log DURation of script
exit ; fin script


a) short text as is (French).
Code:

15/nov./2009 13:46
1) Définir les raccourcis supplémentaire nécessaire à AHK.
Ouvrir Firefox , onglet outils, chez moi dans le cadre du bas, choisir "configurer les clés" Ctrl+Maj+F12 dans le petit écran qui s'ouvre "nouvelle clé" ouvre un petit écran "identité" = nom de la clé champ name: par exemple "AHK chargement en cours" : ça sert à la retrouver car les clés sont listées par ordre alphabétique (d'où l'intérêt du préfixe AHK), cliquer là où il y a "code:" qui disparaît et y coller ce qui est entre "code:" et la ligne de --- qui sert de séparateur uniquement pour la clarté de mon fichier puis OK on revient dans l'écran précédent (étiquette chez moi) aller cliquer dans la première case du bas qui est vide et contiendra la combinaison
enfoncer toute les touches modificatrices (Ctrl Maj alt etc.) puis la lettre (par exemple Alt et Ctrl puis b) on voit apparaître la combinaison (par exemple Alt+Ctrl+B) qui constitueront le raccourci cliquer sur appliquer puis fermer.

2) Modifier un raccourci existant
Ouvrir Firefox , Ctrl+Maj+F12, dans le petit écran qui s'ouvre cliquer sur la clé qu'on veut modifier, si elle est modifiable on a sur l'écran "éditer cette clé" : cliquer, faire les modifications (par exemple ajouter "AHK " devant le nom), OK puis Appliquer.

3) Liste des raccourcis
La ligne de "---------------" ne fait pas partie du code : elle n'est là que pour séparer les raccourcis.
AHK chargement en cours Ctrl Alt b
name: AHK Chargement en cours, id: xxx_key__AHK Chargement en cours, shortcut: Alt+Ctrl+B, code:
    var ClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper);

    ClipboardHelper.copyString( gBrowser.mIsBusy ? "Busy" : "NotBusy" );
---------------------------------------------------------------------------------------------
rechercher résultat trouvé ou pas
name: AHK Rechercher resultat, id: xxx_key__AHK Rechercher resultat, shortcut: Ctrl+Maj+F, code:
    var ClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper);

    if(gFindBar._findField.getAttribute("status") == "notfound")
     ClipboardHelper.copyString("not_found");
    else
     ClipboardHelper.copyString("found");
-------------------------------------------------------------------------------------------------
Source dans clipboard
name: AHK Source clipboard, id: xxx_key__AHK Source clipboard, shortcut: Ctrl+Maj+U, code:
var ClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);

var request =  new XMLHttpRequest();
request.open("GET", "view-source:"+content.location, false);
request.send(null);

ClipboardHelper.copyString(request.responseText.replace(/\n/g,"\r\n"));
-------------------------------------------------------------
Maximiser l'écran
name: AHK Maximise, id: xxx_key__AHK Maximise, shortcut: Ctrl+Maj+M, code:
    window.maximize(); 
-------------------------------------------------------------
Minimiser l'écran (n'est utilisé par aucun script)
name: AHK Minimise, id: xxx_key__AHK Minimise, shortcut: Ctrl+M, code:
    window.restore(); 
-------------------------------------------------------------
Xpath sélecte un tag html et clique dessus
name: AHK Xpath, id: xxx_key__AHK Xpath, shortcut: Ctrl+Q, code:
    var ClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper);

    var clipboard = readFromClipboard().match(/(nigelle);([0-9]+);(.*)/);
    if(!clipboard) return;

    try {
    var node = content.document.evaluate(clipboard[3], content.document, null, 7, null).snapshotItem(clipboard[2]-1);
    } catch(err) { ClipboardHelper.copyString(err); return; }

    if(!node) {
     ClipboardHelper.copyString("NotFound"); return;
    }

    ClipboardHelper.copyString("Found");
    node.focus();

    var e = content.document.createEvent("MouseEvents");
    e.initMouseEvent("click", true, true, null, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    node.dispatchEvent(e);

-------------------------------------------------------------
Alt Maj u
nom :
AHK DOM dans clipboard
avec le code :
    var node = content.document.documentElement.cloneNode(true);
    var dummy = content.document.createElement("dummy");
    dummy.appendChild(node);

    html = dummy.innerHTML.replace(/\n/g,"\r\n");

    var ClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper);
    ClipboardHelper.copyString(html);
-------------------------------------------------------------


c) "commonB.ahk" as is (French) : my library
Code:

fini()
{
  global wher, fnErr, st, fnl
  StartTime := A_TickCount
  bu = 1
  Loop, 140 ; sleep 100+100+300 = 0.5 s., part. 1 0.5x40=20 s., part. 2 0.5x100=50 s.
  {
    clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
    Sleep, 100
    Send, {CTRLDOWN}{ALTDOWN}b{ALTUP}{CTRLUP}
    Sleep, 100
    ClipWait, 10  ; Wait for the clipboard to contain text.
    if ErrorLevel
    {
      continue
    }
    If clipboard = NotBusy
    {
      bu = 0
      break
    }
    If a_index = 40 ; 20 s.
    {
      Send, {ESC} ; stop
      Sleep, 300
      Send, {CTRLDOWN}{SHIFTDOWN}r{SHIFTUP}{CTRLUP} ; Reload (override cache)
      Sleep, 300
    }
    Sleep, 300
  }
  ElapsedTime := A_TickCount - StartTime
  If bu
    {
      ster := wher " * Dépassement temps de chargement " . ElapsedTime . " ms `n "
      rc := err1(ster,fnErr)
    }
;  MsgBox, , , temps de chargement %ElapsedTime% ms. %wher% ,4
  return ElapsedTime ; >1
}
;--------
slect(x)
{
  global wher, fnErr, st, fnl
  Loop, 2
  {
    Send, {CTRLDOWN}f{CTRLUP}
    Sleep, 300
    Send, %x%
    clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
    Sleep, 100
    Send, {CTRLDOWN}{SHIFTDOWN}f{CTRLUP}{SHIFTUP}
    ClipWait, 10  ; Wait for the clipboard to contain text.
    if ErrorLevel
      {
        continue ;2nd try
      }
    break
  }
  If clipboard = found
  {
    rc = 0
  } else {
    ster := wher " * Erreur slect(" . x . ") : pas trouvé. `n "
    rc := err1(ster,fnErr)
  }
  Sleep, 100
  Send, {ESC}
  Sleep, 500
  return rc   ; rc=0 OK , rc=1 KO x not found or clipwait timeout
}
;--------
nxpath(x)
{
  global wher, fnErr, st, fnl
  clipboard := x
  Sleep, 100
  Send, {CTRLDOWN}q{CTRLUP}
  rc := WClipChange(x)
  If clipboard <> Found
  {
    ster := wher " * Erreur Xpat(" . x . ") `n " . clipboard . " `n "
    rc := err1(ster,fnErr)
  }
  Sleep, 100
  return rc   ; rc>1 OK
}
;---------
rxpath(x)
{
  global wher, fnErr, st, fnl, stertxp
  clipboard := x
  Sleep, 100
  Send, {CTRLDOWN}q{CTRLUP}
  rc := WClipChange(x)
  If clipboard = Found ; OK
  {
    return rc   ; rc>1 OK
  }
  stertxp := wher " * Erreur Xpat(" . x . ") `n " . clipboard . " `n "
  If clipboard = NotFound
  {
    return 0  ; rc=0 KO récupérable
  }else{
    rc := err1(stertxp,fnErr) ; KO non récupérable
    return rc 
  }
}
;---------
WClipChange(x)
{
  global wher, fnErr, st, fnl
  StartTime := A_TickCount
  KO = 1
  Loop, 100 ; 10 seconds
  {
    Sleep, 100
    If clipboard <> %x%
    {
      KO = 0
      break
    }
  }
  ElapsedTime := A_TickCount - StartTime
  If KO
    {
      ster := wher " * Dépassement temps ClipChange " . ElapsedTime . " ms `n "
      rc := err1(ster,fnErr)
    }
  return ElapsedTime  ; If OK , rc > 1
}
;--------
err1(x,y)
{
  global st, fnl
  MsgBox %x%
  ster := "**** " . A_Now . " " .  A_ScriptName . "`n" . x . " `n "
  FileAppend, %ster%, %y%
  rc := Purgelog()
  Exit
  return 1   ; rc=0 OK , rc=1 KO
}
--------
err1s(x,y)
{
  global st, fnl, source
  MsgBox %x%
  ster := "**** " . A_Now . " " .  A_ScriptName . "`n" . x
  ster .= "`n ******source*** `n" . source . "`n ************ `n"
  FileAppend, %ster%, %y%
  rc := Purgelog()
  Exit ; err1s = err1 + log source
  return 1   ; rc=0 OK , rc=1 KO
}
;--------
errClipW(x)
{
  global wher, fnErr, st, fnl
  ClipWait, 10  ; Wait for the clipboard to contain text.
  if ErrorLevel
  {
    ster := wher " * Erreur ClipWait dans fonction " . x . " `n "
    rc := err1(ster,fnErr)
  }
  return 1
}
;--------
VerREMatch(x,y)
{
   global wher, fnErr, st, fnl
   If x = 0
   {
      ster := wher " * Erreur RegExMatch pour " . y . " : rien trouvé `n "
      rc := err1s(ster,fnErr)
   }
  Sleep, 100
  return 0   ; rc=0 OK , rc=1 KO
}
;--------
ErrREMatch(x)
{
  global wher, fnErr, st, fnl
  ster := wher " * Erreur RegExMatch pour " . x . " : rien trouvé `n "
  rc := err1s(ster,fnErr)
  Sleep, 100
  return rc   ; rc=0 OK , rc=1 KO
}
;--------
Purgelog()
{
  global st, fnl
  st .= "`n **** Purge " . A_Now . " " .  A_ScriptName . "`n"
  FileAppend, %st%, %fnl%
  return 0   ; rc=0 OK , rc=1 KO
}
;--------
sourc()
{
  clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
  Send, {CTRLDOWN}{SHIFTDOWN}u{SHIFTUP}{CTRLUP}
  errClipW(A_ThisFunc) ; ClipWait, 10 : 10 s. avec gestion d'ErrorLevel
  return clipboard ; source
}
;--------
sdom()
{
  clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
  Send, {ALTDOWN}{SHIFTDOWN}u{SHIFTUP}{ALTUP}
  errClipW(A_ThisFunc) ; ClipWait, 10 : 10 s. avec gestion d'ErrorLevel
  return clipboard ; source du DOM
}
;--------
maxim()
{
  Send, {CTRLDOWN}{SHIFTDOWN}m{SHIFTUP}{CTRLUP}
  Sleep, 200
  return 0
}
;--------
vertit(x)
{
  global wher, fnErr, Title, st, fnl
  WinGetTitle, Title, A
  IfNotInString, Title, x
  {
    ster := wher " * Erreur titre = " . Title . " `n "
    rc := err1(ster,fnErr)
  }
  return 0   ; rc=0 OK , rc=1 KO
}
;--------
versourc(x)
{
  global wher, fnErr, source, st, fnl
  source := sdom()
;    FileAppend, %source%, %fnErr%
  IfNotInString, source, x
  {
    ster := wher " * Erreur : source ne contient pas " . x
    rc := err1s(ster,fnErr)
    return 1   ; rc=0 OK , rc=1 KO
  }
  return 0   ; rc=0 OK , rc=1 KO
}
;--------
verURL(x)
{
  global wher, fnErr, st, fnl, vURL
  vURL := retURL()
  If vURL = %x%
    return 0   ; rc=0 OK , rc=1 KO
  Else
  {
    ster := wher " * Erreur : URL = " . vURL . "`n au lieu de " . x
    rc := err1(ster,fnErr)
    return 1   ; rc=0 OK , rc=1 KO
  }
}
;--------
retURL()
{
  clipboard =  ; Start off empty to allow ClipWait to detect when the text has arrived.
  Send, {ALTDOWN}{SHIFTDOWN}l{SHIFTUP}{ALTUP}
  errClipW(A_ThisFunc) ; ClipWait, 10 : 10 s. avec gestion d'ErrorLevel
  Sleep, 100
  return clipboard ; URL
}
;--------
URLcont(x)
{
  global wher, fnErr, st, fnl
  vURL := retURL()
  IfInString, vURL, %x%
  return 0   ; rc=0 OK , rc=1 KO
  Else
  {
    ster := wher " * Erreur : URL = " . vURL . "`n ne contient pas " . x
    rc := err1(ster,fnErr)
    return 1   ; rc=0 OK , rc=1 KO
  }
}
;--------
Dur(x)
{
  global fnl
  y := A_Now
  EnvSub, y, %x%, seconds
  min := y // 60
  sec := mod(y,60)
;  FileAppend, ********* %A_Now% %y% s %min% min %sec% s `n, %fnl%
  FileAppend, ********* %A_Now% %min% min %sec% s `n, %fnl%
}
;--------
; initialize always used variables
wher := " ??? " ; if you see this, that means that it has not been defined in the script
st := " ... " ; nothing yet to put in normal log file
logdir = %A_ScriptDir%\Log\ ; Répertoire des log : mettre à jour si nécessaire, ici le repertoire des scripts AHK suivi de Log.
fnErr = %logdir%Err.log ; standard error log file : one should be defined
deb := A_Now ; start time used by dur(deb) at the bottom of script


Good luck ! I hope that you have enough knowledge of AHK to understand what I do. I think that next step will be b) short text translated.

I'll be away till Sunday afternoon.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    AutoHotkey Community Forum Index -> Ask for Help All times are GMT
Goto page 1, 2, 3, 4, 5, 6  Next
Page 1 of 6

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group