stickysolutionz
New member
- Joined
- Jun 13, 2017
- Messages
- 3
- Programming Experience
- Beginner
I wrote a simple application to interface with Storj.io. Stroj is a decentralized cloud storage concept. It is driven by libstorj, a simple CLI. I wrote a gui to perform simple tasks like, list buckets, list files, upload download and delete. The code below is working 100%, that was until the other day, libstorj came out with a new binary, and this binary will not accept the method below. Let me focus where this is failing. with the old binary I could simply
MyProcess.StandardInput.WriteLine(InputTextBox.Text)
MyProcess.StandardInput.WriteLine(PWTextBox.Text)
MyProcess.StandardInput.Flush()
This would first launch a predetermined command defined in inputtextbox.text to console and then supply the password, which is the next prompt. So in reality line 1 would execute "storj.exe list-buckets" - this command would then ask for a password, the following line would satisfy that request "MyProcess.StandardInput.WriteLine(PWTextBox.Text)" This all went to sh1t with the new binary. Now what happens is, the console doesn't receive the password properly. basically it executes "storj.exe list-buckets" but the pw doesn't get entered, a return seems to be executed and then MyProcess.StandardInput.WriteLine(PWTextBox.Text) is displayed as a command itself rather than being inserted as the pw. Jesus, reading this back is confusing as hell, I hope someone can make sense of this.
My source, and a landing page on general use can be found at http://my.uselessinter.net/projects/storjgui/
If someone, can give me an idea on how else I can interact with cmd through windows forms that would be DOPE!!!
Thanks in advance
Heres my complete form1 source.

MyProcess.StandardInput.WriteLine(InputTextBox.Text)
MyProcess.StandardInput.WriteLine(PWTextBox.Text)
MyProcess.StandardInput.Flush()
This would first launch a predetermined command defined in inputtextbox.text to console and then supply the password, which is the next prompt. So in reality line 1 would execute "storj.exe list-buckets" - this command would then ask for a password, the following line would satisfy that request "MyProcess.StandardInput.WriteLine(PWTextBox.Text)" This all went to sh1t with the new binary. Now what happens is, the console doesn't receive the password properly. basically it executes "storj.exe list-buckets" but the pw doesn't get entered, a return seems to be executed and then MyProcess.StandardInput.WriteLine(PWTextBox.Text) is displayed as a command itself rather than being inserted as the pw. Jesus, reading this back is confusing as hell, I hope someone can make sense of this.
My source, and a landing page on general use can be found at http://my.uselessinter.net/projects/storjgui/
If someone, can give me an idea on how else I can interact with cmd through windows forms that would be DOPE!!!
Thanks in advance
Heres my complete form1 source.
Public Class Form1
Private WithEvents MyProcess As Process
Private Delegate Sub AppendOutputTextDelegate(ByVal text As String)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.AcceptButton = ListBucketsButton
MyProcess = New Process
With MyProcess.StartInfo
.FileName = "CMD.EXE"
.UseShellExecute = False
.CreateNoWindow = True
.RedirectStandardInput = True
.RedirectStandardOutput = True
.RedirectStandardError = True
End With
MyProcess.Start()
MyProcess.BeginErrorReadLine()
MyProcess.BeginOutputReadLine()
AppendOutputText("Process Started at: " & MyProcess.StartTime.ToString)
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
MyProcess.StandardInput.WriteLine("EXIT") 'send an EXIT command to the Command Prompt
MyProcess.StandardInput.Flush()
MyProcess.Close()
End Sub
Private Sub MyProcess_ErrorDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs) Handles MyProcess.ErrorDataReceived
AppendOutputText(vbCrLf & "Error: " & e.Data)
End Sub
Private Sub MyProcess_OutputDataReceived(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs) Handles MyProcess.OutputDataReceived
AppendOutputText(vbCrLf & e.Data)
End Sub
Private Sub ExecuteButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBucketsButton.Click
If PWTextBox.Text = "" Then
MsgBox("Enter your password first")
Else
OutputTextBox.Text = ""
MyProcess.StandardInput.WriteLine(InputTextBox.Text)
MyProcess.StandardInput.WriteLine(PWTextBox.Text)
MyProcess.StandardInput.Flush()
End If
End Sub
Private Sub AppendOutputText(ByVal text As String)
If OutputTextBox.InvokeRequired Then
Dim myDelegate As New AppendOutputTextDelegate(AddressOf AppendOutputText)
Me.Invoke(myDelegate, text)
Else
OutputTextBox.AppendText(text)
End If
End Sub
Private Sub ImportKeysToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ImportKeysToolStripMenuItem.Click
Shell("storj import-keys", vbNormalFocus)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs)
Me.Close()
End Sub
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
If BucketIDTextBox.Text = "" Then
MsgBox("you must enter Bucket ID first")
ElseIf UL2STextBox.Text = "" Then
MsgBox("Use the browse button to find a file first. ...It's like you're not even trying :(")
Else
Shell("storj upload-file " & BucketIDTextBox.Text & " """ & UL2STextBox.Text & """", vbNormalFocus)
End If
UL2STextBox.Text = ""
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles ListFilesButton.Click
If BucketIDTextBox.Text = "" Then
MsgBox("you must enter Bucket ID first")
Else
OutputTextBox.Text = ""
MyProcess.StandardInput.WriteLine(ListFIlesTextBox.Text & BucketIDTextBox.Text)
MyProcess.StandardInput.WriteLine(PWTextBox.Text)
MyProcess.StandardInput.Flush()
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If BucketIDTextBox.Text = "" Then
MsgBox("you must enter Bucket ID first")
ElseIf FileIDTextBox.Text = "" Then
MsgBox("Enter File ID")
ElseIf DL2STextBox.Text = "" Then
MsgBox("For Christ's sake, where do you want to save it???")
Else
Shell("storj download-file " & BucketIDTextBox.Text & " " & FileIDTextBox.Text & " """ & DL2STextBox.Text & """", vbNormalFocus)
End If
DL2STextBox.Text = ""
FileIDTextBox.Text = ""
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
If FileIDTextBox.Text = "" Then
MsgBox("you must enter File ID first")
Else
Shell("storj remove-file " & BucketIDTextBox.Text & " " & FileIDTextBox.Text & "", vbNormalFocus)
End If
FileIDTextBox.Text = ""
End Sub
Private Sub BrowseButton_Click(sender As Object, e As EventArgs) Handles BrowseButton.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
UL2STextBox.Text = OpenFileDialog1.FileName
End If
End Sub
Private Sub CreateNewBucketToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CreateNewBucketToolStripMenuItem.Click
Form2.Show()
End Sub
End Class
