Есть ли способ автоматически обнаружить порт ADB в BlueStacks? ⇐ C#
Есть ли способ автоматически обнаружить порт ADB в BlueStacks?
Я в настоящее время работаю над проектом и должен подключаться в BlueStacks, используя ADB и код в C#: < /li>
< /ul>
У меня есть проблема, когда каждый раз я использую команду ADB: < /li>
< /ul>
C:\Windows\system32>"C:\Program Files\BlueStacks_msi5\HD-Adb.exe" devices
List of devices attached
< /code>
Но порт отличается от 5555, он не будет показывать каких -либо устройств, даже если я включил его в BlueStacks. Если я делаю это много раз. /> < /ul>
internal async Task FindModule(string processName, string moduleName)
{
return await Task.Run(() =>
{
try
{
if (_process == null || _process.HasExited)
{
UpdateStatus("ADB shell process not running.");
return 0U;
}
_builder.Clear();
_process.StandardInput.WriteLine("ps");
if (!WaitForOutput(5000))
{
UpdateStatus("Timeout: No output from 'ps'");
return 0U;
}
string pid = ParsePidFromPsOutput(processName, _builder.ToString());
if (string.IsNullOrEmpty(pid))
{
UpdateStatus("Could not find PID for process.");
return 0U;
}
UpdateStatus($"Found PID: {pid}");
_builder.Clear();
_process.StandardInput.WriteLine($"cat /proc/{pid}/maps | grep {moduleName}");
if (!WaitForOutput(7000))
{
UpdateStatus("Timeout: No output from 'maps'");
return 0U;
}
var mapsLines = _builder.ToString().Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in mapsLines)
{
if (line.Contains(moduleName))
{
var parts = line.Split('-');
if (parts.Length > 0)
{
string addr = parts[0].Trim();
UpdateStatus($"Module {moduleName} loaded at 0x{addr}");
_process.Kill();
return Convert.ToUInt32(addr, 16);
}
}
}
UpdateStatus("Module not found in maps.");
_process.Kill();
return 0U;
}
catch (Exception ex)
{
UpdateStatus($"FindModule exception: {ex.Message}");
try { _process.Kill(); } catch { }
return 0U;
}
});
}
< /code>
Я попробовал код, чтобы найти порт в файле conf и испытанный, но это требует запуска приложения с правами администратора, и если пользователь использует приложение MSI /BlueStacks, путь будет другим, не говоря уже о том, есть ли у пользователя несколько экземпляров BlueStacks, я не знаю, как определить, какой экземпляр.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... bluestacks
Я в настоящее время работаю над проектом и должен подключаться в BlueStacks, используя ADB и код в C#: < /li>
< /ul>
У меня есть проблема, когда каждый раз я использую команду ADB: < /li>
< /ul>
C:\Windows\system32>"C:\Program Files\BlueStacks_msi5\HD-Adb.exe" devices
List of devices attached
< /code>
Но порт отличается от 5555, он не будет показывать каких -либо устройств, даже если я включил его в BlueStacks. Если я делаю это много раз. /> < /ul>
internal async Task FindModule(string processName, string moduleName)
{
return await Task.Run(() =>
{
try
{
if (_process == null || _process.HasExited)
{
UpdateStatus("ADB shell process not running.");
return 0U;
}
_builder.Clear();
_process.StandardInput.WriteLine("ps");
if (!WaitForOutput(5000))
{
UpdateStatus("Timeout: No output from 'ps'");
return 0U;
}
string pid = ParsePidFromPsOutput(processName, _builder.ToString());
if (string.IsNullOrEmpty(pid))
{
UpdateStatus("Could not find PID for process.");
return 0U;
}
UpdateStatus($"Found PID: {pid}");
_builder.Clear();
_process.StandardInput.WriteLine($"cat /proc/{pid}/maps | grep {moduleName}");
if (!WaitForOutput(7000))
{
UpdateStatus("Timeout: No output from 'maps'");
return 0U;
}
var mapsLines = _builder.ToString().Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var line in mapsLines)
{
if (line.Contains(moduleName))
{
var parts = line.Split('-');
if (parts.Length > 0)
{
string addr = parts[0].Trim();
UpdateStatus($"Module {moduleName} loaded at 0x{addr}");
_process.Kill();
return Convert.ToUInt32(addr, 16);
}
}
}
UpdateStatus("Module not found in maps.");
_process.Kill();
return 0U;
}
catch (Exception ex)
{
UpdateStatus($"FindModule exception: {ex.Message}");
try { _process.Kill(); } catch { }
return 0U;
}
});
}
< /code>
Я попробовал код, чтобы найти порт в файле conf и испытанный, но это требует запуска приложения с правами администратора, и если пользователь использует приложение MSI /BlueStacks, путь будет другим, не говоря уже о том, есть ли у пользователя несколько экземпляров BlueStacks, я не знаю, как определить, какой экземпляр.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... bluestacks
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать ADB с таким эмулятором, как MEmu/Bluestacks/Nox App Player
Anonymous » » в форуме Android - 0 Ответы
- 50 Просмотры
-
Последнее сообщение Anonymous
-