Вот этот код:
$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.