using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.IO;
using Microsoft.Win32;
namespace VinaCaptcha
{
public static class HideMyAssHandle
{
#region Windows API - user32.dll configs
[DllImport("user32.dll")]
private static extern int FindWindow(string lpClassName, String lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);
[DllImport("user32.dll")]
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo);
private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)] //http://msdn.microsoft.com/en-us/library/windows/desktop/ms646291(v=vs.85).aspx
private static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
//const uint WM_KEYDOWN = 0x0100;
//const uint WM_KEYUP = 0x0101;
//const uint WM_CHAR = 0x0102;
//const int VK_TAB = 0x09;
//const int VK_ENTER = 0x0D;
//const int VK_UP = 0x26;
//const int VK_DOWN = 0x28;
//const int VK_RIGHT = 0x27;
//public const int WM_CLEAR = 0x0303;
private const int BN_CLICKED = 245;
private const int WM_LBUTTONDBLCLK = 0x0203;
private const int WM_SETTEXT = 0x000C;
private const int WM_PASTE = 0x0302;
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
private static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);
//[DllImport("user32.dll")]
//public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
//[DllImport("user32.dll")]
//[return: MarshalAs(UnmanagedType.Bool)]
//static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
#endregion
private static string AppFolder { set; get; }
private static string AppName { set; get; }
private static string AppLogFile { set; get; }
public static string FirefoxUsed = "";
public static bool Connect()
{
bool Connected = false;
//Detect App Folder
AppName = "HMA! Pro VPN";
AppFolder = @"C:\Program Files (x86)\HMA! Pro VPN\bin\";
AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log");
if (File.Exists(AppFolder + AppName + ".exe") == false)
{
AppFolder = @"C:\Program Files\HMA! Pro VPN\bin\";
AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log");
if (File.Exists(AppFolder + AppName + ".exe") == false)
{
return Connected;
}
}
StartHMA:
// Delete log file before start new connect
while (File.Exists(AppLogFile))
{
try
{
File.Delete(AppLogFile);
Thread.Sleep(1000);
}
catch { }
}
// If HMA.exe exists then Disconnect
Process[] prs = Process.GetProcessesByName(AppName);
if (prs.Length > 0)
{
if (prs[0].Responding == false)
{
while (prs.Length > 0)
{
try
{
prs[0].Kill();
prs[0].Close();
}
catch { }
prs = Process.GetProcessesByName(AppName);
}
Thread.Sleep(2000);
// Start HMA.exe & Connect
Process.Start(AppFolder + AppName + ".exe");
CheckWarningUpdate();
}
}
// Update Registry before start HMA.exe
else
{
//Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginID", hmaAcc[0]);
//Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginKey", hmaAcc[1]);
//Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "ProtocolType2", "1");//1: OpenVPN, 2: PPTP
//Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "Region", hmaAcc[2]);
Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LogIPHistory", "True");
// Start HMA.exe & Connect
Process.Start(AppFolder + AppName + ".exe");
CheckWarningUpdate();
}
// Connect
Process.Start(AppFolder + AppName + ".exe", "-disconnect");
Thread.Sleep(3000);
Process.Start(AppFolder + AppName + ".exe", "-connect");
// Check Connected and Kill Error, Crash
for (int i = 0; i < 120; i++)
{
Thread.Sleep(1000);
if (i % 5 == 0)
{
// Check CrashReport
if (FindWindow(default(string), "CrashReport") > 0)
{
prs = Process.GetProcessesByName(AppName);
while (prs.Length > 0)
{
try
{
prs[0].Kill();
prs[0].Close();
}
catch { }
prs = Process.GetProcessesByName(AppName);
}
goto StartHMA;
}
}
// Check new IP Address
if ((i > 15) && (i % 3 == 0))
{
if (File.Exists(AppLogFile))
{
Connected = true;
break;
}
//foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
//{
// if ((nic.Description.Contains("TAP-Win32 Adapter V9") || nic.NetworkInterfaceType == NetworkInterfaceType.Ppp) && nic.OperationalStatus == OperationalStatus.Up)
// {
// Connected = true;
// break;
// }
//}
//if (Connected) break;
}
}
if (Connected == false)
{
prs = Process.GetProcessesByName(AppName);
while (prs.Length > 0)
{
try
{
prs[0].Kill();
prs[0].Close();
}
catch { }
prs = Process.GetProcessesByName(AppName);
}
}
return Connected;
}
public static void Disconnect()
{
try
{
Process.Start(AppFolder + AppName + ".exe", "-disconnect");
}
catch { }
}
private static void CheckWarningUpdate()
{
for (int i = 0; i < 15; i++)
{
Thread.Sleep(1000);
if (i % 3 == 0)
{
// Disable Warning Update new version
int WarningBox = FindWindow(default(string), "Warning");
if (WarningBox > 0)
{
try
{
IntPtr btnNoThanks = FindWindowEx((IntPtr)WarningBox, IntPtr.Zero, default(string), "No thanks");
SendMessage(btnNoThanks, BN_CLICKED, IntPtr.Zero, null);
}
catch { }
}
}
}
}
}
}
Thanks a nhiều!Nhận hàng:
Code:using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.IO; using Microsoft.Win32; namespace VinaCaptcha { public static class HideMyAssHandle { #region Windows API - user32.dll configs [DllImport("user32.dll")] private static extern int FindWindow(string lpClassName, String lpWindowName); [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle); [DllImport("user32.dll")] private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo); private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] //http://msdn.microsoft.com/en-us/library/windows/desktop/ms646291(v=vs.85).aspx private static extern bool EnableWindow(IntPtr hWnd, bool bEnable); [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); //const uint WM_KEYDOWN = 0x0100; //const uint WM_KEYUP = 0x0101; //const uint WM_CHAR = 0x0102; //const int VK_TAB = 0x09; //const int VK_ENTER = 0x0D; //const int VK_UP = 0x26; //const int VK_DOWN = 0x28; //const int VK_RIGHT = 0x27; //public const int WM_CLEAR = 0x0303; private const int BN_CLICKED = 245; private const int WM_LBUTTONDBLCLK = 0x0203; private const int WM_SETTEXT = 0x000C; private const int WM_PASTE = 0x0302; [DllImport("user32.dll", EntryPoint = "SendMessageA")] private static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam); //[DllImport("user32.dll")] //public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); //[DllImport("user32.dll")] //[return: MarshalAs(UnmanagedType.Bool)] //static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); #endregion private static string AppFolder { set; get; } private static string AppName { set; get; } private static string AppLogFile { set; get; } public static string FirefoxUsed = ""; public static bool Connect() { bool Connected = false; //Detect App Folder AppName = "HMA! Pro VPN"; AppFolder = @"C:\Program Files (x86)\HMA! Pro VPN\bin\"; AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log"); if (File.Exists(AppFolder + AppName + ".exe") == false) { AppFolder = @"C:\Program Files\HMA! Pro VPN\bin\"; AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log"); if (File.Exists(AppFolder + AppName + ".exe") == false) { return Connected; } } StartHMA: // Delete log file before start new connect while (File.Exists(AppLogFile)) { try { File.Delete(AppLogFile); Thread.Sleep(1000); } catch { } } // If HMA.exe exists then Disconnect Process[] prs = Process.GetProcessesByName(AppName); if (prs.Length > 0) { if (prs[0].Responding == false) { while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } Thread.Sleep(2000); // Start HMA.exe & Connect Process.Start(AppFolder + AppName + ".exe"); CheckWarningUpdate(); } } // Update Registry before start HMA.exe else { //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginID", hmaAcc[0]); //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginKey", hmaAcc[1]); //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "ProtocolType2", "1");//1: OpenVPN, 2: PPTP //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "Region", hmaAcc[2]); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LogIPHistory", "True"); // Start HMA.exe & Connect Process.Start(AppFolder + AppName + ".exe"); CheckWarningUpdate(); } // Connect Process.Start(AppFolder + AppName + ".exe", "-disconnect"); Thread.Sleep(3000); Process.Start(AppFolder + AppName + ".exe", "-connect"); // Check Connected and Kill Error, Crash for (int i = 0; i < 120; i++) { Thread.Sleep(1000); if (i % 5 == 0) { // Check CrashReport if (FindWindow(default(string), "CrashReport") > 0) { prs = Process.GetProcessesByName(AppName); while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } goto StartHMA; } } // Check new IP Address if ((i > 15) && (i % 3 == 0)) { if (File.Exists(AppLogFile)) { Connected = true; break; } //foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) //{ // if ((nic.Description.Contains("TAP-Win32 Adapter V9") || nic.NetworkInterfaceType == NetworkInterfaceType.Ppp) && nic.OperationalStatus == OperationalStatus.Up) // { // Connected = true; // break; // } //} //if (Connected) break; } } if (Connected == false) { prs = Process.GetProcessesByName(AppName); while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } } return Connected; } public static void Disconnect() { try { Process.Start(AppFolder + AppName + ".exe", "-disconnect"); } catch { } } private static void CheckWarningUpdate() { for (int i = 0; i < 15; i++) { Thread.Sleep(1000); if (i % 3 == 0) { // Disable Warning Update new version int WarningBox = FindWindow(default(string), "Warning"); if (WarningBox > 0) { try { IntPtr btnNoThanks = FindWindowEx((IntPtr)WarningBox, IntPtr.Zero, default(string), "No thanks"); SendMessage(btnNoThanks, BN_CLICKED, IntPtr.Zero, null); } catch { } } } } } } }
Nhận hàng:
Code:using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.IO; using Microsoft.Win32; namespace VinaCaptcha { public static class HideMyAssHandle { #region Windows API - user32.dll configs [DllImport("user32.dll")] private static extern int FindWindow(string lpClassName, String lpWindowName); [DllImport("user32.dll", SetLastError = true)] private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle); [DllImport("user32.dll")] private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo); private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] //http://msdn.microsoft.com/en-us/library/windows/desktop/ms646291(v=vs.85).aspx private static extern bool EnableWindow(IntPtr hWnd, bool bEnable); [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); //const uint WM_KEYDOWN = 0x0100; //const uint WM_KEYUP = 0x0101; //const uint WM_CHAR = 0x0102; //const int VK_TAB = 0x09; //const int VK_ENTER = 0x0D; //const int VK_UP = 0x26; //const int VK_DOWN = 0x28; //const int VK_RIGHT = 0x27; //public const int WM_CLEAR = 0x0303; private const int BN_CLICKED = 245; private const int WM_LBUTTONDBLCLK = 0x0203; private const int WM_SETTEXT = 0x000C; private const int WM_PASTE = 0x0302; [DllImport("user32.dll", EntryPoint = "SendMessageA")] private static extern IntPtr SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam); //[DllImport("user32.dll")] //public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); //[DllImport("user32.dll")] //[return: MarshalAs(UnmanagedType.Bool)] //static extern bool PostMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); #endregion private static string AppFolder { set; get; } private static string AppName { set; get; } private static string AppLogFile { set; get; } public static string FirefoxUsed = ""; public static bool Connect() { bool Connected = false; //Detect App Folder AppName = "HMA! Pro VPN"; AppFolder = @"C:\Program Files (x86)\HMA! Pro VPN\bin\"; AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log"); if (File.Exists(AppFolder + AppName + ".exe") == false) { AppFolder = @"C:\Program Files\HMA! Pro VPN\bin\"; AppLogFile = AppFolder.Replace(@"\bin\", @"\log\ip_history.log"); if (File.Exists(AppFolder + AppName + ".exe") == false) { return Connected; } } StartHMA: // Delete log file before start new connect while (File.Exists(AppLogFile)) { try { File.Delete(AppLogFile); Thread.Sleep(1000); } catch { } } // If HMA.exe exists then Disconnect Process[] prs = Process.GetProcessesByName(AppName); if (prs.Length > 0) { if (prs[0].Responding == false) { while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } Thread.Sleep(2000); // Start HMA.exe & Connect Process.Start(AppFolder + AppName + ".exe"); CheckWarningUpdate(); } } // Update Registry before start HMA.exe else { //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginID", hmaAcc[0]); //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LoginKey", hmaAcc[1]); //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "ProtocolType2", "1");//1: OpenVPN, 2: PPTP //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "Region", hmaAcc[2]); Registry.SetValue(@"HKEY_CURRENT_USER\Software\Privax\HMA! Pro VPN\Settings", "LogIPHistory", "True"); // Start HMA.exe & Connect Process.Start(AppFolder + AppName + ".exe"); CheckWarningUpdate(); } // Connect Process.Start(AppFolder + AppName + ".exe", "-disconnect"); Thread.Sleep(3000); Process.Start(AppFolder + AppName + ".exe", "-connect"); // Check Connected and Kill Error, Crash for (int i = 0; i < 120; i++) { Thread.Sleep(1000); if (i % 5 == 0) { // Check CrashReport if (FindWindow(default(string), "CrashReport") > 0) { prs = Process.GetProcessesByName(AppName); while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } goto StartHMA; } } // Check new IP Address if ((i > 15) && (i % 3 == 0)) { if (File.Exists(AppLogFile)) { Connected = true; break; } //foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) //{ // if ((nic.Description.Contains("TAP-Win32 Adapter V9") || nic.NetworkInterfaceType == NetworkInterfaceType.Ppp) && nic.OperationalStatus == OperationalStatus.Up) // { // Connected = true; // break; // } //} //if (Connected) break; } } if (Connected == false) { prs = Process.GetProcessesByName(AppName); while (prs.Length > 0) { try { prs[0].Kill(); prs[0].Close(); } catch { } prs = Process.GetProcessesByName(AppName); } } return Connected; } public static void Disconnect() { try { Process.Start(AppFolder + AppName + ".exe", "-disconnect"); } catch { } } private static void CheckWarningUpdate() { for (int i = 0; i < 15; i++) { Thread.Sleep(1000); if (i % 3 == 0) { // Disable Warning Update new version int WarningBox = FindWindow(default(string), "Warning"); if (WarningBox > 0) { try { IntPtr btnNoThanks = FindWindowEx((IntPtr)WarningBox, IntPtr.Zero, default(string), "No thanks"); SendMessage(btnNoThanks, BN_CLICKED, IntPtr.Zero, null); } catch { } } } } } } }
Thích Renci hay Bitvise ?ANh ơi có code change bằng ssh ko anh , tìm google hoài ko thấy anh ơi
bỉtvise bác nha , thanks bác nhiều lắm , cho hỏi là bác hay dùng sky hay yahoo có gì e pm học hỏi vài cái nếu thắc mắcThích Renci hay Bitvise ?
Nhận hàng:bỉtvise bác nha , thanks bác nhiều lắm , cho hỏi là bác hay dùng sky hay yahoo có gì e pm học hỏi vài cái nếu thắc mắc
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;
using System.Net;
using System.Net.Sockets;
using ManagedWinapi.Windows;
namespace VinaCaptcha
{
public static class BitviseHandle
{
#region Windows API - user32.dll configs
private const int WM_CLOSE = 16;
private const int BN_CLICKED = 245;
private const int WM_LBUTTONDOWN = 0x0201;
private const int WM_LBUTTONUP = 0x0202;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam);
//Click - Worked Perfect
//SendMessage((int)hwnd, WM_LBUTTONDOWN, 0, IntPtr.Zero);
//Thread.Sleep(100);
//SendMessage((int)hwnd, WM_LBUTTONUP, 0, IntPtr.Zero);
//---
//Close Window
//SendMessage((int)hwnd, WM_CLOSE ,0 , IntPtr.Zero);
#endregion
private static Hashtable BitviseList = new Hashtable();
public static int TimeoutSeconds = 30;
private static int PortIndex = 1079;
public static int GetPortAvailable()
{
PortIndex++;
if (PortIndex >= 1181) PortIndex = 1079;
Process BitviseApp = new Process();
BitviseList.Add(PortIndex, BitviseApp);
return PortIndex;
}
public static bool Connect(string Host, string User, string Pass, int ForwardPort)
{
bool Connected = false;
//Start Bitvise - Auto Login
ProcessStartInfo sinfo = new ProcessStartInfo();
sinfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\BvSsh.exe";
sinfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient";
sinfo.Arguments = "-profile=\"" + AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\" + ForwardPort + ".bscp\" -host=" + Host + " -user=" + User + " -password=" + Pass + " -loginOnStartup -hide=trayIcon";
Process BitviseApp = Process.Start(sinfo);
BitviseList[ForwardPort] = BitviseApp;
Thread.Sleep(2000);
//Bitvise Login Checking...
for (int i = 0; i < TimeoutSeconds; i++)
{
//Detect Host Key Verification
SystemWindow[] wins = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Host Key Verification"; });
if (wins.Length > 0)
{
SystemWindow[] wins2 = wins[0].FilterDescendantWindows(false, (SystemWindow w) => { return w.Title == "&Accept for This Session"; }); //Accept and &Save
if (wins2.Length > 0)
{
//Click 4 times to effected !
SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero);
Thread.Sleep(10);
SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero);
SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero);
Thread.Sleep(10);
SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero);
}
}
//Detect Connected
SystemWindow[] wins3 = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Bitvise SSH Client - " + ForwardPort + ".bscp - " + Host + ":22"; });
if (wins3.Length > 0)
{
Connected = true;
break;
}
Thread.Sleep(1000);
}
if (Connected == false)
{
try
{
BitviseApp.Kill();
BitviseApp.Dispose();
}
catch { }
}
return Connected;
}
public static void Disconnect(int ForwardPort)
{
if (BitviseList[ForwardPort] == null) return;
try
{
Process BitviseApp = BitviseList[ForwardPort] as Process;
BitviseApp.Kill();
BitviseApp.Dispose();
}
catch { }
}
private static bool GetPort(string Host, int Port)
{
return true;
//using (TcpClient tcpClient = new TcpClient())
//{
// IAsyncResult result = tcpClient.BeginConnect(Host, Port, null, null);
// WaitHandle timeoutHandler = result.AsyncWaitHandle;
// try
// {
// if (!result.AsyncWaitHandle.WaitOne(200, false))
// {
// tcpClient.Close();
// return false;
// }
// tcpClient.EndConnect(result);
// }
// catch
// {
// return false;
// }
// finally
// {
// timeoutHandler.Close();
// }
// return true;
//}
}
}
}
Nhận hàng:
Code:using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Net; using System.Net.Sockets; using ManagedWinapi.Windows; namespace VinaCaptcha { public static class BitviseHandle { #region Windows API - user32.dll configs private const int WM_CLOSE = 16; private const int BN_CLICKED = 245; private const int WM_LBUTTONDOWN = 0x0201; private const int WM_LBUTTONUP = 0x0202; [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam); //Click - Worked Perfect //SendMessage((int)hwnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); //Thread.Sleep(100); //SendMessage((int)hwnd, WM_LBUTTONUP, 0, IntPtr.Zero); //--- //Close Window //SendMessage((int)hwnd, WM_CLOSE ,0 , IntPtr.Zero); #endregion private static Hashtable BitviseList = new Hashtable(); public static int TimeoutSeconds = 30; private static int PortIndex = 1079; public static int GetPortAvailable() { PortIndex++; if (PortIndex >= 1181) PortIndex = 1079; Process BitviseApp = new Process(); BitviseList.Add(PortIndex, BitviseApp); return PortIndex; } public static bool Connect(string Host, string User, string Pass, int ForwardPort) { bool Connected = false; //Start Bitvise - Auto Login ProcessStartInfo sinfo = new ProcessStartInfo(); sinfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\BvSsh.exe"; sinfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient"; sinfo.Arguments = "-profile=\"" + AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\" + ForwardPort + ".bscp\" -host=" + Host + " -user=" + User + " -password=" + Pass + " -loginOnStartup -hide=trayIcon"; Process BitviseApp = Process.Start(sinfo); BitviseList[ForwardPort] = BitviseApp; Thread.Sleep(2000); //Bitvise Login Checking... for (int i = 0; i < TimeoutSeconds; i++) { //Detect Host Key Verification SystemWindow[] wins = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Host Key Verification"; }); if (wins.Length > 0) { SystemWindow[] wins2 = wins[0].FilterDescendantWindows(false, (SystemWindow w) => { return w.Title == "&Accept for This Session"; }); //Accept and &Save if (wins2.Length > 0) { //Click 4 times to effected ! SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); Thread.Sleep(10); SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero); SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); Thread.Sleep(10); SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero); } } //Detect Connected SystemWindow[] wins3 = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Bitvise SSH Client - " + ForwardPort + ".bscp - " + Host + ":22"; }); if (wins3.Length > 0) { Connected = true; break; } Thread.Sleep(1000); } if (Connected == false) { try { BitviseApp.Kill(); BitviseApp.Dispose(); } catch { } } return Connected; } public static void Disconnect(int ForwardPort) { if (BitviseList[ForwardPort] == null) return; try { Process BitviseApp = BitviseList[ForwardPort] as Process; BitviseApp.Kill(); BitviseApp.Dispose(); } catch { } } private static bool GetPort(string Host, int Port) { return true; //using (TcpClient tcpClient = new TcpClient()) //{ // IAsyncResult result = tcpClient.BeginConnect(Host, Port, null, null); // WaitHandle timeoutHandler = result.AsyncWaitHandle; // try // { // if (!result.AsyncWaitHandle.WaitOne(200, false)) // { // tcpClient.Close(); // return false; // } // tcpClient.EndConnect(result); // } // catch // { // return false; // } // finally // { // timeoutHandler.Close(); // } // return true; //} } } }
ManagedWinapi thì download từ đây: http://mwinapi.sourceforge.net/
Profile của Bitvise thì từ tạo ra rồi save lại thôi nhé.
Hình như cái BitviseHandle không disable được hay sao ấy bác, bật soft thì bật đượcNhận hàng:
Code:using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Net; using System.Net.Sockets; using ManagedWinapi.Windows; namespace VinaCaptcha { public static class BitviseHandle { #region Windows API - user32.dll configs private const int WM_CLOSE = 16; private const int BN_CLICKED = 245; private const int WM_LBUTTONDOWN = 0x0201; private const int WM_LBUTTONUP = 0x0202; [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam); //Click - Worked Perfect //SendMessage((int)hwnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); //Thread.Sleep(100); //SendMessage((int)hwnd, WM_LBUTTONUP, 0, IntPtr.Zero); //--- //Close Window //SendMessage((int)hwnd, WM_CLOSE ,0 , IntPtr.Zero); #endregion private static Hashtable BitviseList = new Hashtable(); public static int TimeoutSeconds = 30; private static int PortIndex = 1079; public static int GetPortAvailable() { PortIndex++; if (PortIndex >= 1181) PortIndex = 1079; Process BitviseApp = new Process(); BitviseList.Add(PortIndex, BitviseApp); return PortIndex; } public static bool Connect(string Host, string User, string Pass, int ForwardPort) { bool Connected = false; //Start Bitvise - Auto Login ProcessStartInfo sinfo = new ProcessStartInfo(); sinfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\BvSsh.exe"; sinfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient"; sinfo.Arguments = "-profile=\"" + AppDomain.CurrentDomain.BaseDirectory + "BitviseSSHClient\\" + ForwardPort + ".bscp\" -host=" + Host + " -user=" + User + " -password=" + Pass + " -loginOnStartup -hide=trayIcon"; Process BitviseApp = Process.Start(sinfo); BitviseList[ForwardPort] = BitviseApp; Thread.Sleep(2000); //Bitvise Login Checking... for (int i = 0; i < TimeoutSeconds; i++) { //Detect Host Key Verification SystemWindow[] wins = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Host Key Verification"; }); if (wins.Length > 0) { SystemWindow[] wins2 = wins[0].FilterDescendantWindows(false, (SystemWindow w) => { return w.Title == "&Accept for This Session"; }); //Accept and &Save if (wins2.Length > 0) { //Click 4 times to effected ! SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); Thread.Sleep(10); SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero); SendMessage((int)wins2[0].HWnd, WM_LBUTTONDOWN, 0, IntPtr.Zero); Thread.Sleep(10); SendMessage((int)wins2[0].HWnd, WM_LBUTTONUP, 0, IntPtr.Zero); } } //Detect Connected SystemWindow[] wins3 = SystemWindow.FilterToplevelWindows((SystemWindow w) => { return w.Title == "Bitvise SSH Client - " + ForwardPort + ".bscp - " + Host + ":22"; }); if (wins3.Length > 0) { Connected = true; break; } Thread.Sleep(1000); } if (Connected == false) { try { BitviseApp.Kill(); BitviseApp.Dispose(); } catch { } } return Connected; } public static void Disconnect(int ForwardPort) { if (BitviseList[ForwardPort] == null) return; try { Process BitviseApp = BitviseList[ForwardPort] as Process; BitviseApp.Kill(); BitviseApp.Dispose(); } catch { } } private static bool GetPort(string Host, int Port) { return true; //using (TcpClient tcpClient = new TcpClient()) //{ // IAsyncResult result = tcpClient.BeginConnect(Host, Port, null, null); // WaitHandle timeoutHandler = result.AsyncWaitHandle; // try // { // if (!result.AsyncWaitHandle.WaitOne(200, false)) // { // tcpClient.Close(); // return false; // } // tcpClient.EndConnect(result); // } // catch // { // return false; // } // finally // { // timeoutHandler.Close(); // } // return true; //} } } }
ManagedWinapi thì download từ đây: http://mwinapi.sourceforge.net/
Profile của Bitvise thì từ tạo ra rồi save lại thôi nhé.
Gọi lại hàm Disconnect là nó Kill process !Hình như cái BitviseHandle không disable được hay sao ấy bác, bật soft thì bật được
Hình như cái BitviseHandle không disable được hay sao ấy bác, bật soft thì bật được
2 bác chỉ dạy e 1 chút đc k?Hay quá bác nha thanks bác nhiều
Bác cho e xin project này đc koGọi lại hàm Disconnect là nó Kill process !