1. Python / Говнокод #25409

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    import ctypes, sys
    if ctypes.windll.shell32.IsUserAnAdmin():
        if __name__ == "__main__":
            main()
    else:
            ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

    Ав тозапуск с пра вами адми нис тра тора
    Для авто запус ка мы будем исполь зовать сле дующий код:

    Те перь при попыт ке запус тить скрипт вызов будет передан на UAC (если акти‐
    вен) и откро ется новое окно тер минала, где наш код выпол нится от име ни
    адми нис тра тора.
    Ес ли такой вари ант не устра ивает, то всег да мож но вос поль зовать ся
    готовы ми решени ями.
    --------------
    Ксакеп. if __name__ == "__main__" не там стоит, автор не понял что это такое.

    Запостил: syoma, 26 Февраля 2019

    Комментарии (46) RSS

    •    if "BSSID" in line:
      
         elif "SSID" in line:

      Ну хоть в правильном порядке расставил.
      Ответить
    • Все аргументы проебали при перезапуске под админом?
      Ответить
    • > автор не понял
      Зато если эту херню зацепить как модуль, то права тоже повысятся.

      Правда запустит оно не тот скрипт.
      Ответить
    • Вообще если автор хотел запустить программу, то для этого уже есть subprocess. Дерграть напрямую winapi это уебанство.
      Ответить
    • Что за проеблы?
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • Ко пи паст из pdf
        Ответить
        • Именно поэтому я за (PostScript).
          Ответить
          • Вероятно, будет то же самое. Ну это смотря как копировать.

            Постскрипт, сгенерированный некоторыми текстовыми процессорами, содержит массив кусков текста с координатами привязки левого нижнего угла, чтобы можно было точно управлять кернингом и шириной пробелов. На «JSON» (просто для наглядности) это выглядело бы примерно так:
            [{x:0, y:20, text:"Ав"},
            {x:10, y:20, text:"то"},
            {x:20, y:20, text:"за"},
            {x:30, y:20, text:"пуск"},
            {x:60, y:20, text:"с"}]

            Понять, что «автозапуск» пишется слитно, а «с» от него отделено пробелами, можно только померив координаты x и сравнив шаг сетки с суммой ширин букв текущего шрифта. Заметив, что между «пуск» и «с» необычно большой интервал, поймём, что между ними должен быть пробел.
            Ответить
            • Как же всё сложно в этих пропорциональных шрифтах. В текстовом режиме с фиксированной сеткой ничего этого нет, именно поэтому я за моноширинные шрифты.
              Ответить
            • > необычно большой интервал
              Ещё не факт, что эти буквы вообще имеют отношение друг к другу... Вдруг это сноска какая-нибудь внизу листа. Или так сильно прыгать нельзя?
              Ответить
              • Ну там же указываются обе координаты (причём в постскрипте может быть по-хитрому, в командах относительных перемещений a la turtle graphics, а в pdf могут быть сразу абсолютные координаты).

                Давно не ковырял эти форматы, придётся уточнять. Можно посмотреть исходники «XPDF» (в комплекте есть программа pdftotext). Вот именно там, если ничего не путаю, я и увидел попытку смоделировать сетку текста: сначала эти фрагменты текста сортируются по координатам, потом квантуется вертикальная координата, чтобы разбить текст на строки (у надстрочных и подстрочных индексов получаются дробные координаты), потом исследуется горизонтальная координата в пределах каждой строки, чтобы выделить слова.

                В общем, нужна сегментация текста, почти как в OCR.
                Ответить
                • TextOutputDev.cc из xpdf не помещается в 5 тысяч строк. Там все прелести: и загрузка метрики из шрифта, и возня с bounding box'ами для символов, и даже поддержка повёрнутого текста (например, когда блок текста выведен боком). И сравнивать координаты фрагментов текста приходится не строго, а допускать погрешность (несколько раз упоминается слово «threshold»).
                  Ответить
                  • Зачем нужен ".cc"?
                    Ответить
                    • Муха цеце содержит в два раза больше витамина C, чем обычная.

                      А если серьёзно, «.cc» –— это просто одно из расширений имени файла для «C++» наряду с «.cpp», «.c++», «.cxx», «.C» (да, в некоторых unix-подобных системах заглавная буква «C» означает «C++», а строчная означает сишку, из-за чего случается какой багор при попытке передать такие файлы на носителе с «FAT» или с ещё какой-нибудь регистронезависимой файловой системой).
                      Ответить
                      • > случается какой багор при попытке передать такие файлы на носителе с «FAT»
                        Именно поэтому я против файловых систем. В S" Forth" файлы не обязательны, можно хранить данные на диске в пронумерованных 1-кидобайтных блоках, гдк нет никаких имен и расгирений. Именно поэтрму я за S" Forth".
                        Ответить
                        • А как записывали информацию с БК-0010 на аудиокассету? Там же подключался обычный магнитофон с односторонним каналом (его включаешь либо на запись, либо на воспроизведение).

                          На слух искали свободное место и включали запись?
                          Ответить
                        • Ты понимаешь, что ты поехавший?
                          Ответить
                  • Ебаать... А я ещё обзывал GDIP нехорошими словами.
                    Ответить
                    • Ну так PDF –— это не вордовский DOC. Для PDF важнее не логическая структура документа, а чтобы на всех принтерах печаталось одинаково и чтобы во всех вьюерах отображалось одинаково. Печатается PDF красиво, а текст из него выжимать не всегда легко.

                      К слову, у MS есть программа Publisher (в некоторые версии MS Office её включали, а в некоторых нужно ставить отдельно). Так вот Publisher –— противоположность Ворда в том смысле, что ему важны координаты фрагментов текста (как и PDF).

                      А почему возникли ассоциации с GDIP?
                      Ответить
    • Отмель кала.
      Ответить
    • Для корректного запуска с правами админа следует юзать shellexecuteex.
      Ответить

    Добавить комментарий