Author Topic: Можно как-то получить список запущенных процессов в диспетчере задачь?  (Read 13783 times)

0 Members and 2 Guests are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
dramster! Родной! Выручай! У меня появилась охренительная идея, чтобы кликер не конфликтовал с другими прогами, при работе с ини-файлами! Мы можем намутить передачу в длл НЕСКОЛЬКИХ строковых параметров?
« Last Edit: March 04, 2019, 10:56:53 AM by Hito »
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Передаешь строки по символьно кодами. Разделяешь их не используемыми кодами или серией кодов. В dll собираешь строки обратно.

Пример: 1 2 3 4 5 6 -1 7 8 9 1 -1 -2 и тд,  где -1 конец строки, а -2 конец данных.

Напоминаю что если планируешь получать ответ из dll, без багов будет работать только в 1 потоке из-за того что переменные возврата глобальные.
« Last Edit: March 04, 2019, 11:54:18 AM by ya12 »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Передаешь строки по символьно кодами. Разделяешь их не используемыми кодами или серией кодов. В dll собираешь строки обратно.

Пример: 1 2 3 4 5 6 -1 7 8 9 1 -1 -2 и тд,  где -1 конец строки, а -2 конец данных.

Напоминаю что если планируешь получать ответ из dll, без багов будет работать только в 1 потоке из-за того что переменные возврата глобальные.
Мне пример надо... Я так нифига не понял...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Аааа... Передать несколько строк в одной строке, но между каждым "словом" впихнуть символ-метку, по которой длл разобьет уже одну строку на подстроки. Все - понял!
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Все - понял!
Вот и отлично, только отрицательные числа длл вроде не принимает. Добавлено: или нет? Непомню, потестишь сам, разделителем можно сделать любое число за пределами asci, или юникода (если там в юникоде передает и русские символы), к примеру 99999 вполне подойдет

Лучше добавить еще один параметр в начале со значением количества строк.переменных, далее параметры с длиной строк, далее сами символы (коды). Я думаю так будет правильней. Помочь с кодом пока нет возможностей  :(.

Хотя с разделителем  - тоже вариант, тогда и параметр с длиной строки не придется отсылать.
« Last Edit: March 04, 2019, 10:23:08 PM by dramster »

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
В пределах integer берет (от -2ккк до +2ккк).

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
В пределах integer берет (от -2ккк до +2ккк).
Не понял
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
В пределах integer берет (от -2ккк до +2ккк).
Не понял


.....
Поскольку CALL("Plugin.DLL", ...) передает в DLL и принимает  числа в диапазоне от  -2 147 483 648 до 2 147 483 647,  .....

Такчто то, что я написал выше про отрицательные числа не правда.


ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
1к - 1 тысяча (косарь)
1кк - 1 миллион (лям, лимон)
1ккк - 1 миллиард (арбуз)
Жаргон использующийся в компьютерных играх (и в жизни)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
wmic process get name >file.txt
Это что такое...?
Командная строка. Сохраняет в файл.
Code: (clickermann) [Select]
EXECUTE("cmd.exe", "/C wmic process get name >D:\Processes.txt")

Кликер не работает с файлом Processes.txt, который получается. В частности не работают - STRREADLN, TFCOUNT и TFREADARR.  Что можно сделать?
« Last Edit: September 22, 2019, 04:48:21 PM by Hito »
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Code: (clickermann) [Select]
// Версия км v4.14.003d x32
----------------------------

EXECUTE("cmd.exe", "/C wmic process get name >Processes.txt")  //cmd на выходе делает файл в кодирвке UCS-2. Раньше вроде это не мешало для работы с кликерманом, по крайней мере я не замечал :/

wait(1)

//попроовал перевести его в UTF-8
FREADDATA ("Processes.txt", $arr) //разбиваем на байты файл


$str = ""
for($i=1, $i<arrsize($arr)-2,2)  // cmd еще и BOM в начале пишет, пропускаем его, начинаем с третьего байта
   
   $str = strconcat ($str,char($arr[$i+1]))
   
end_cyc

tfwrite("out.txt",$str) //Получайем тот же файл в UTF-8 "out.txt"  . Если текст русский, то не  уверен что сработает корректно.

print($str)

halt
« Last Edit: September 22, 2019, 11:32:17 PM by dramster »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Code: (clickermann) [Select]
// Версия км v4.14.003d x32
----------------------------

EXECUTE("cmd.exe", "/C wmic process get name >Processes.txt")  //cmd на выходе делает файл в кодирвке UCS-2. Раньше вроде это не мешало для работы с кликерманом, по крайней мере я не замечал :/

wait(1)

//попроовал перевести его в UTF-8
FREADDATA ("Processes.txt", $arr) //разбиваем на байты файл


$str = ""
for($i=1, $i<arrsize($arr)-2,2)  // cmd еще и BOM в начале пишет, пропускаем его, начинаем с третьего байта
   
   $str = strconcat ($str,char($arr[$i+1]))
   
end_cyc

tfwrite("out.txt",$str) //Получайем тот же файл в UTF-8 "out.txt"  . Если текст русский, то не  уверен что сработает корректно.

print($str)

halt

Ппц уже файлов в проекте... И тут, чтоб получит запущенные процессы, еще два текстовых файла...
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Необязательно хранить инфу в файле, оставляй в переменной   :).

Я тут подумал, может всегото стоило поменять маркер BOM. И все и так заработало бы, ато я заморочился этими байтами... и скорее всего зря  :o. Завтра проверю, или знатоки подскажут.
« Last Edit: September 23, 2019, 12:18:09 AM by dramster »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
или знатоки подскажут
Видимо не подскажут...) Я в этих "БОМах" вообще ничего не понимаю...))
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
 Проверил, не прокатило. Но немного просмотрев расположение байт в этой UCS-2 кодировке, состряпал скрипт, который убирает bom и нулевые байты. При этом получаем обычную строку ansi. Но если эту строку записать в файл, то на выходе получим уже utf-8 c bom.
 Принципиально скрипт не поменялся, просто так нагляднее. (по крайней мере для мена  :D)
Code: (clickermann) [Select]
// Версия км v4.14.003d x32
----------------------------

EXECUTE("cmd.exe", "/C wmic process get name >Processes.txt") ////cmd на выходе делает файл в кодирвке UCS-2
waitms(500)

FREADDATA ("Processes.txt", $arr,2) //разбиваем на байты файл, но пропускаем bom (2 байта)

$str = ""
for($i=0, $i < arrsize($arr))  //создаем вполне себе ANSI строку, со всеми переводоми строки
   IF($arr[$i] ! 0)     
      $str = strconcat ($str,char($arr[$i]))
   END_IF
end_cyc

print($str)// смотрим ее в логе

tfwrite("out.txt",$str) //но при записи в файл этой строки, она становится уже в utf-8, еще и bom добавляется


halt