-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
28 changed files
with
3,934 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,13 @@ | ||
build/ | ||
bundle/ | ||
.idea | ||
.gradle/ | ||
gradle/ | ||
gradlew | ||
gradlew.* | ||
|
||
|
||
*.phpintel | ||
|
||
package.hub.yml | ||
package-lock.php.yml | ||
vendor/* | ||
|
||
/build/ | ||
/bundle/ | ||
/.idea | ||
/.gradle/ | ||
/gradle/ | ||
/gradlew | ||
/gradlew.* | ||
|
||
/*.phpintel | ||
|
||
/package.hub.yml | ||
/package-lock.php.yml | ||
/vendor/* |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<?php | ||
namespace develnext\bundle\windows; | ||
|
||
use ide\bundle\AbstractBundle; | ||
use ide\bundle\AbstractJarBundle; | ||
use ide\project\behaviours\GuiFrameworkProjectBehaviour; | ||
use ide\project\Project; | ||
|
||
/** | ||
* Class WindowsBundle | ||
*/ | ||
class WindowsBundle extends AbstractJarBundle | ||
{ | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<ul> | ||
<li><code>bundle\windows\COM</code> <i>(работа с COM портами)</i></li> | ||
<li><code>bundle\windows\Registry</code> <i>(работа с реестром)</i></li> | ||
<li><code>bundle\windows\Startup</code> <i>(работа с автозапуском)</i></li> | ||
<li><code>bundle\windows\Task</code> <i>(работа с процессами)</i></li> | ||
<li><code>bundle\windows\Windows</code> <i>(основные функции)</i></li> | ||
<li><code>bundle\windows\WindowsScriptHost</code> <i>(взаимодействие со скриптами Windows)</i></li> | ||
<li><code>bundle\windows\Wlan</code> <i>(работа с беспроводными сетями)</i></li> | ||
</ul> | ||
<b><a href="https://github.com/TsSaltan/DevelNext-Windows/wiki">Документация (Wiki)</a></b> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
<?php | ||
namespace bundle\windows; | ||
|
||
use bundle\windows\result\comItem; | ||
use bundle\windows\WindowsScriptHost as WSH; | ||
use php\util\Regex; | ||
|
||
/** | ||
* Класс для работы с COM-портами | ||
* @packages windows | ||
*/ | ||
class COM | ||
{ | ||
/** | ||
* --RU-- | ||
* Получить список портов | ||
* @return comItem[] | ||
*/ | ||
public static function getList(){ | ||
$com = []; | ||
$reg = Registry::of('HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm')->readFully(); | ||
foreach($reg as $r){ | ||
foreach($r as $v){ | ||
$com[$v->value] = new comItem($v->value, array_merge(self::getParams($v->value), ['path' => $v->key])); | ||
} | ||
} | ||
|
||
return $com; | ||
} | ||
|
||
/** | ||
* --RU-- | ||
* Получить список параметров порта | ||
* @param string $port Имя порта (от COM1 до COM255) | ||
* @return array | ||
*/ | ||
public static function getParams($port){ | ||
$r = WSH::WMIC('path Win32_PnPEntity WHERE "Caption like \'%' . $port . '%\'" get'); | ||
return isset($r[0]) ? $r[0] : []; | ||
} | ||
|
||
/** | ||
* --RU-- | ||
* Ищет устройство по имени | ||
* @param string $search Строка поиска | ||
* @param array $searchFields=['Caption','Description','Name','Service'] Поля, по ктоторым осуществляется поиск | ||
* @return comItem[] | ||
*/ | ||
public static function searchDevice($search, $searchFields = ['Caption', 'Description', 'Name', 'Service']){ | ||
$searchCOM = ['Caption', 'Name']; // Поля, в которых фигурирует номер COM порта | ||
|
||
// Формирование SQL запроса | ||
$searchQuery = []; | ||
foreach($searchFields as $field){ | ||
$searchQuery[] = $field . ' like \'%' . $search . '%\''; | ||
} | ||
$search = implode(' OR ', $searchQuery); | ||
$r = WSH::WMIC('path Win32_PnPEntity WHERE "'.$search.'" get'); | ||
|
||
$ports = []; | ||
foreach ($r as $v) { | ||
$string = ''; // Делаем конкатенацию полей, где может фигурировать номер COM порта | ||
foreach ($searchCOM as $field){ | ||
$string .= $v[$field]; | ||
} | ||
$regex = Regex::of('(COM[0-9]+)', Regex::CASE_INSENSITIVE + Regex::UNICODE_CASE)->with($string); | ||
if ($regex->find()){ // Если удалось определить номер com порта | ||
$ports[$regex->group(1)] = new comItem($regex->group(1), $v); | ||
} | ||
} | ||
|
||
return $ports; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
<?php | ||
namespace bundle\windows; | ||
|
||
|
||
use bundle\windows\WindowsScriptHost as WSH; | ||
use bundle\windows\Windows; | ||
use php\lib\str; | ||
use php\util\Regex; | ||
use bundle\windows\result\lanAdapter; | ||
use php\util\Scanner; | ||
|
||
/** | ||
* Local Area Network | ||
* @packages windows | ||
*/ | ||
class Lan | ||
{ | ||
/** | ||
* Получить список адаптеров | ||
* @return array | ||
*/ | ||
public static function getAdapters() : array { | ||
$adapters = []; | ||
$adaptersObj = []; | ||
$adapterName = false; | ||
|
||
// ipconfig возвращает в 866, независимо от указанной кодировки | ||
$cmd = WSH::cmd('ipconfig /all', [], 'utf-8', 'cp866'); | ||
$nic = WSH::WMIC('nic get'); | ||
|
||
$scanner = (new Scanner($cmd))->useDelimiter(Regex::of('\n', Regex::MULTILINE)); | ||
while($scanner->hasNextLine()){ | ||
$scanner->next(); | ||
$line = $scanner->current(); | ||
|
||
$regAdapter = Regex::of('Ethernet adapter ([^\n\r]+):', Regex::MULTILINE)->with($line); | ||
if($regAdapter->find()){ | ||
$adapterName = $regAdapter->group(1); | ||
} elseif($adapterName != false){ | ||
$regParam = Regex::of('\s+([^\.]+)[\.\s]+:([^\n]+)', Regex::MULTILINE)->with($line); | ||
if($regParam->find()){ | ||
$key = trim($regParam->group(1)); | ||
if(isset($adapters[$adapterName][$key])) $adapterName = false; | ||
else $adapters[$adapterName][$key] = trim($regParam->group(2)); | ||
} | ||
} | ||
} | ||
|
||
foreach($nic as $k => $v){ | ||
if(!isset($v['NetConnectionID'])) continue; | ||
if(!isset($adapters[$v['NetConnectionID']])){ | ||
$adapters[$v['NetConnectionID']] = [ | ||
'Description' => $v['Description'], | ||
'Physical Address' => $v['MACAddress'], | ||
]; | ||
} | ||
|
||
$adapters[$v['NetConnectionID']]['Speed'] = $v['Speed'] ?? 0; | ||
$adapters[$v['NetConnectionID']]['Manufacturer'] = $v['Manufacturer'] ?? ''; | ||
$adapters[$v['NetConnectionID']]['Manufacturer'] = $v['Manufacturer'] ?? ''; | ||
$adapters[$v['NetConnectionID']]['NetEnabled'] = isset($v['NetEnabled']) && $v['NetEnabled'] == 'TRUE'; | ||
} | ||
|
||
foreach ($adapters as $name => $params) { | ||
$adaptersObj[] = new lanAdapter($name, $params); | ||
} | ||
return $adaptersObj; | ||
} | ||
|
||
/** | ||
* Получить используемый по умолчанию адаптер | ||
* @return lanAdapter | ||
*/ | ||
public static function getActiveAdapter() : lanAdapter { | ||
$adapters = self::getAdapters(); | ||
foreach ($adapters as $adapter) { | ||
if($adapter->isActive()){ | ||
return $adapter; | ||
} | ||
} | ||
|
||
return null; | ||
} | ||
|
||
/** | ||
* Есть ли оборудование для работы с проводными сетями | ||
* @return boolean | ||
*/ | ||
public static function isSupported() : bool { | ||
return sizeof(self::getAdapters()) > 0; | ||
} | ||
|
||
} |
Oops, something went wrong.