Действительно ли возможно создать ярлык Windows с помощью PHP?

Вы можете использовать внешний цикл для посещения символов, и если найден непробельный символ, создайте новую строку с заглавной буквой в этой позиции.

function wave(string) {
    var result = [],
        i;

    for (i = 0; i < string.length; i++) {
        if (string[i] === ' ') continue;
        result.push(Array.from(string, (c, j) => i === j ? c.toUpperCase() : c).join(''));
    }
    return result;
}

console.log(wave("hello"));   // ["Hello", "hEllo", "heLlo", "helLo", "hellO"]
console.log(wave(" h e y ")); // [" H e y ", " h E y ", " h e Y "]
console.log(wave(""));        // []
.as-console-wrapper { max-height: 100% !important; top: 0; }

5
задан Drarok 27 April 2009 в 10:00
поделиться

3 ответа

Благодаря приведенному выше ответу я обнаружил, что вы действительно можете вызывать COM из php, вот мой первый набросок символической ссылки () замена:

if (! function_exists('symlink')) {
    function symlink($target, $link) {
        if (! substr($link, -4, '.lnk'))
            $link .= '.lnk';

        $shell = new COM('WScript.Shell');
        $shortcut = $shell->createshortcut($link);
        $shortcut->targetpath = $target;
        $shortcut->save();
    }
}
7
ответ дан 14 December 2019 в 01:16
поделиться

Существует поддержка точек соединения (аналогично символическим ссылкам UNIX) до Vista.

Вам нужен связанный инструмент из набора ресурсов Windows (бесплатная загрузка).

Ярлыки - это просто файлы. Вы можете создавать файлы ярлыков с помощью COM WScript API. Пример кода делает это с помощью Python. Если существует библиотека для PHP, которая позволяет вам взаимодействовать с COM, вы должны иметь возможность сделать что-то подобное.

import win32com.client
import winshell

userDesktop = winshell.desktop()
shell = win32com.client.Dispatch('WScript.Shell')

shortcut = shell.CreateShortCut(userDesktop + '\\Zimbra Webmail.lnk')
shortcut.Targetpath = r'C:\Program Files\Mozilla Firefox\firefox.exe'
shortcut.Arguments = 'http://mysite.com/auth/preauth.php'
shortcut.WorkingDirectory = r'C:\Program Files\Mozilla Firefox'
shortcut.save()
2
ответ дан 14 December 2019 в 01:16
поделиться

Для записи, точки соединения в NTFS действительно только для каталогов. Я добился большого успеха, используя linkd.exe для создания виртуальной файловой системы, но есть несколько вещей, о которых нужно знать:

  • Вы не можете установить связь между томами (т.е. пытаетесь создать ссылку в C: которая указывает на местоположение в D: не сработает)
  • Кажется, что отсоединение вещей приводит к спорадическому удалению данных в месте назначения. Резервное копирование / перемещение данных перед удалением ссылки!
  • Точки соединения страдают теми же проблемами при обмене данными по сети, что и смонтированные тома - иногда они просто не работают удаленно. Также кажется, что они случайным образом (то есть иногда) наследуют некоторые разрешения общего доступа от исходной папки, независимо от того, как вы настраиваете ссылку назначения.

Приветствую вас за полезные сообщения о создании файлов .lnk, именно то, что я хотел ...

0
ответ дан 14 December 2019 в 01:16
поделиться