StrokesPlus Forum
                       
StrokesPlus Forum
Home | Profile | Register | Active Topics
Members | Search | FAQ
 All Forums
 Lua Scripts
 General Action Scripts
 function: auto fill username and password

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
breakcore Posted - 02/26/2013 : 07:30:00
Hi, Rob.
Hi, Everione.

I find this function very useful.

What it does:
Automatically fills in the username and/or password data from a file which contains that data.
First it gets the active window title and searches for the match in the "data file".
1) If there is only one match then it immediately fills in username and password assigned to that window title.
2) If there is several matches, it pops up a drop down list dialog to choose desired account (only from those accounts which are assigned to the current window title). And then fills in the chosen account data.
3) If there is no match it pops up a drop-down list with all accounts to choose from. And then fills in the chosen account data.

Syntax for the data file:
web page/app name<TAB(s)>username<TAB(s)>password<TAB(s)>[|window title]<TAB(s)>[comments]
web page/app name 2<TAB(s)>username 2<TAB(s)>password 2<TAB(s)>[|window title 2]<TAB(s)>[comments 2]
----
----
"window title" and "comments" are optional. If you specify "window title" you must put a "|" character before it. You don't have to specify full title of window, just a part that distinguishes it from another window titles.
Note: Google chrome's window title is the same as the title of currently active tab.

Usage:
auto_fill(1) --to fill in username and password
auto_fill(2) --to fill in only password

Function
function auto_fill(af_mode)
	current_window_title=acGetWindowTitle(acGetForegroundWindow(),nil,nil)

	--local af_file_r=io.open("D:\\passwords.txt", "r")
	--af_file=af_file_r:read("*a")
	--af_file_r:close()
	--i keep my passwords right in the script file, if you want to keep them on a 
	--separate file use the three preceding lines above and change a file path
	af_file=
[[
strokesplus.com		username_1		password_1	|StrokesPlus		account email name@gmail.com
ebay.com		username_2		password_2	[|window title_2]	[comments]
skype			username_3		password_3	[|window title_3]	[comments]
name_4			username_4		password_4	[|window title_4]	[comments]
---
---
---

]]	
	total_lines=# af_file:gsub("[^\n]","")
	af_name={} af_username={} af_password={} af_window_title={} af_dialog=0 k=0 af_list=''
	for i=1,total_lines do
		current_line=string.sub(af_file,k+1,string.find(af_file,"\n",k+1))
		af_name[i]=string.gsub(current_line,"([^\t]+)\t+[^\t]+\t+[^\t]+\t*.*\n","%1")
		af_username[i]=string.gsub(current_line,"[^\t]+\t+([^\t]+)\t+[^\t]+\t*.*\n","%1")
		af_password[i]=string.gsub(current_line,"[^\t]+\t+[^\t]+\t+([^\t]+)\t*.*\n","%1")
		if string.gsub(current_line,"[^\t]+\t+[^\t]+\t+[^\t]+\t*(.).*\n","%1")=='|' then --If window title specified
			af_window_title[i]=string.gsub(current_line,"[^\t]+\t+[^\t]+\t+[^\t]+\t*|([^\t]+).*\n","%1")
		else
			af_window_title[i]="0"
		end
		k=string.find (af_file, "\n",k+1)
	end
	for i=1,total_lines do
		if string.find(current_window_title,af_window_title[i]) then
			af_dialog=1			--there is only one account assigned to this window/page title
			af_dialog_1_line=i
			for j=i+1,total_lines do
				if af_name[j]==af_name[i] then
					af_dialog=2	--there is several accounts assigned to this window/page title
					af_dialog_2_line=j
					af_dialog_2_site=af_name[i]
					break
				end
			end
			break
		end
	end	
	--acMessageBox(af_dialog,'af_dialog',nil)
	if af_dialog==0 then
		for i=1,total_lines do
			af_list=af_list..af_name[i]..'   '..af_username[i]..'|||'
		end
	elseif af_dialog==1 then
		username_line=af_username[af_dialog_1_line] 
		password_line=af_password[af_dialog_1_line] 
	elseif af_dialog==2 then
		for i=af_dialog_2_line-1,total_lines do
			if af_name[i]==af_dialog_2_site then
				af_list=af_list..af_name[i]..'   '..af_username[i]..'|||'
			end
		end
	end
	if af_dialog==0 or af_dialog==2 then
		choise=acInputBox("Title","Label",af_list,"|||")
		if choise~='' then 
			for i=1,total_lines do 
				if choise==af_name[i]..'   '..af_username[i] then 
					username_line=af_username[i] 
					password_line=af_password[i] 
					break
				end
			end 
		end
	end		
	--acMessageBox(username_line,'username_line',nil)
	--acMessageBox(password_line,'password_line',nil)
	if choise~='' then 
		acDelay(300)
		if af_mode==1 then 
			acSetClipboardText(username_line) acSendKeys("^v{Delay 100}{TAB}{Delay 200}^a")  acDelay(200) 
		end
		acSetClipboardText(password_line) acSendKeys("^v{Delay 200}{ENTER}")
	end
end


Any correction/optimization of the function would be appreciated
Sorry for my English if I made mistakes.
2   L A T E S T    R E P L I E S    (Newest First)
breakcore Posted - 02/26/2013 : 09:35:50
Thanks :)
The function actually still raw. I know, the code isn't easy to read/modify, even for me, but it works)
I'll post some updates, hopefully.
Rob Posted - 02/26/2013 : 09:07:31
As always, breakcore, you impress with your ingenuity and code skills :-)

StrokesPlus Forum © 2011-2018 Rob Yapchanyk Go To Top Of Page
Snitz Forums 2000