Вот этот код:
$WshShell = new COM("WScript.Shell");
if (c("pages1")->pageIndex == 0) c("memo1")->setFocus(); // установка фокуса на текстовое поле
elseif (c("pages1")->pageIndex == 1) c("memo2")->setFocus();
elseif (c("pages1")->pageIndex == 2) c("memo3")->setFocus();
elseif (c("pages1")->pageIndex == 3) c("memo4")->setFocus();
elseif (c("pages1")->pageIndex == 4) c("memo5")->setFocus();
elseif (c("pages1")->pageIndex == 5) c("memo6")->setFocus();
elseif (c("pages1")->pageIndex == 6) c("memo7")->setFocus();
$WshShell->SendKeys("^{END}"); // нажатие клавиши END чтобы попасть в конец
$WshShell->SendKeys("{HOME}"); // Нажатие клавиши HOME чтобы вернуться в начало последней строки
Можно сократить в этот:
$index = c("pages1")->pageIndex;
$memo = c("memo".($index+1)); // достаем нужный компонент
$memo->setFocus();
$memo->selStart = strlen($memo->text) - 1; // устанавливаем курсор в конечный символ
Чтобы получить список существующих дисков можно использовать следующий код:
function diskBusyArray(){
$result = array();
for($i = 'A'; $i<'Z'; $i++){
if ( is_dir($i.':/') )
$result[] = $i;
}
}
Функция вернет вам массив из занятых букв для дисков. Это намного проще чем ваш код.В общем, это лишь советы, как усовершенствовать код, не прибегая к использованию COM.
