Edun Posted October 22, 2016 Share Posted October 22, 2016 Alright I have done some simple things using AutoIT but now I have a little and most likely stupid problem. I already have a working script where I use ControlSend to send strings in different textboxes in a program I use at work. Now I would like to know if there is a simple way to send something to specific row. For example if there would be a notepad file with 3 rows: Test1 Test2 Test3 Now I would like to send something to row 2 after the Test2 text. Should I just use something like @CRLF or arrow keys to get focus to correct place as I was planning or any smarter way to work this out? Sorry for the stupid question. I usually find the answer reading forums and help files but for some reason not this one. Link to comment Share on other sites More sharing options...
l3ill Posted October 22, 2016 Share Posted October 22, 2016 Instead of Send use FileWriteLine to write to your text file and use the line parameter. My Contributions... SnippetBrowser NewSciTE PathFinder Text File Manipulation FTP Connection Tester / INI File - Read, Write, Save & Load Example Link to comment Share on other sites More sharing options...
Edun Posted October 22, 2016 Author Share Posted October 22, 2016 43 minutes ago, l3ill said: Instead of Send use FileWriteLine to write to your text file and use the line parameter. Not sure if I can use that. Well maybe I could but then I'd need to rewrite the whole thing but my goal is to just add text to the end of specific line. Notepad was maybe a bad example since I'm not actually using it. Right now I already got a handle of the program where I want to send strings. Like these: ControlSend($examplehandle, "", "[NAME:ToTextBox]", $sometext) ;Receiver of the email ControlSend($examplehandle, "", "[NAME:SubjectTextBox]", "Hello") ;Subject of the email Those are single line text boxes so no problem sending strings there. Third text box where I want to send text is the email message itself which already contains some text. Let's say: Hello! My name is [mynamehere] Best Regards, Any way to use ControlSend or some other method using $handle to send my name there? Link to comment Share on other sites More sharing options...
l3ill Posted October 22, 2016 Share Posted October 22, 2016 Interesting problem.. There may be but I don't know of it. To be honest, I would have gone about this differently as to not have to do it that way. My Contributions... SnippetBrowser NewSciTE PathFinder Text File Manipulation FTP Connection Tester / INI File - Read, Write, Save & Load Example Link to comment Share on other sites More sharing options...
Malkey Posted October 23, 2016 Share Posted October 23, 2016 Here is an example using Notepad that appends text to a specified line number. #include <String.au3> ; -------- Create Notepad example ------------ If ProcessExists("notepad.exe") = 0 Then Run("notepad.exe") Local $hWnd = WinWait("[CLASS:Notepad]", "") ControlSetText($hWnd, "", "Edit1", "Hello!" & @CRLF & "My name is " & @CRLF & "Best Regards," & @CRLF) EndIf ; ------ End of Create Notepad example ---------- Local $hWnd = WinWait("[CLASS:Notepad]", "") Local $sText = ControlGetText($hWnd, "", "Edit1") Local $appendage = "[mynamehere]" Local $iLineNum = 2 ; <<<<<<< Enter line number to append text to here. ControlSetText($hWnd, "", "Edit1", _AppendText2Line($sText, $appendage, $iLineNum)) Func _AppendText2Line($sText, $appendage, $iLineNum) Local $iPos = StringInStr($sText, @CRLF, 0, $iLineNum) Return _StringInsert($sText, $appendage, ($iPos = 0) ? StringLen($sText) : $iPos - 1) ; If @CRLF is not in $sText, then $appendage is appended to end of $sText. EndFunc ;==>_AppendText2Line Link to comment Share on other sites More sharing options...
Edun Posted October 23, 2016 Author Share Posted October 23, 2016 4 hours ago, Malkey said: Here is an example using Notepad that appends text to a specified line number. #include <String.au3> ; -------- Create Notepad example ------------ If ProcessExists("notepad.exe") = 0 Then Run("notepad.exe") Local $hWnd = WinWait("[CLASS:Notepad]", "") ControlSetText($hWnd, "", "Edit1", "Hello!" & @CRLF & "My name is " & @CRLF & "Best Regards," & @CRLF) EndIf ; ------ End of Create Notepad example ---------- Local $hWnd = WinWait("[CLASS:Notepad]", "") Local $sText = ControlGetText($hWnd, "", "Edit1") Local $appendage = "[mynamehere]" Local $iLineNum = 2 ; <<<<<<< Enter line number to append text to here. ControlSetText($hWnd, "", "Edit1", _AppendText2Line($sText, $appendage, $iLineNum)) Func _AppendText2Line($sText, $appendage, $iLineNum) Local $iPos = StringInStr($sText, @CRLF, 0, $iLineNum) Return _StringInsert($sText, $appendage, ($iPos = 0) ? StringLen($sText) : $iPos - 1) ; If @CRLF is not in $sText, then $appendage is appended to end of $sText. EndFunc ;==>_AppendText2Line I think this will just do the trick. Wow, surprisingly hard, thought there would've been easier way to do this. Thanx a lot! Gonna try this one on my script Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now