Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> спрятать программу 
V
    Опции темы
kirufka
Дата 10.11.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.10.2008
Где: Москва

Репутация: нет
Всего: нет



 smile Народ такой вот вопрос: пишу не вирус! просто хотелось бы кое что спрятать от глаз юзверя (во имя секретности)... Поэтому: как спрятать консольное приложение под win и визуально и из task manager'а. Предположительно скомпилю в .exe  smile 
PM MAIL Jabber   Вверх
shamber
Дата 10.11.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



kirufka, а perl тут причем? 
PM MAIL Jabber   Вверх
kirufka
Дата 10.11.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.10.2008
Где: Москва

Репутация: нет
Всего: нет



ммм... ну как причем тут perl, на perl'е же хочу сделать сею программу...
PM MAIL Jabber   Вверх
shamber
Дата 10.11.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Код

Код

Use Win32::API. The following code does exactly what Win32::GUI does. 
use Win32::API 0.20;

# just for completeness...
use constant SW_HIDE => 0;
use constant SW_SHOWNORMAL => 1;

# the API we need
my $GetConsoleTitle = new Win32::API('kernel32', 'GetConsoleTitle', 'P
+N', 'N');
my $SetConsoleTitle = new Win32::API('kernel32', 'SetConsoleTitle', 'P
+', 'N');
my $FindWindow = new Win32::API('user32', 'FindWindow', 'PP', 'N');
my $ShowWindow = new Win32::API('user32', 'ShowWindow', 'NN', 'N');

# save the current console title
my $old_title = " " x 1024;
$GetConsoleTitle->Call( $old_title, 1024 );

# build up a new (fake) title
my $title = "PERL-$$-".Win32::GetTickCount();

# sets our string as the console title
$SetConsoleTitle->Call( $title );

# sleep 40 milliseconds to let Windows rename the window
Win32::Sleep(40);

# find the window by title
$hw = $FindWindow->Call( 0, $title );

# restore the old title
$SetConsoleTitle->Call( $old_title );

# hide the console!
$ShowWindow->Call( $hw, SW_HIDE );

# sleep one second, then show the console again

sleep(1);
$ShowWindow->Call( $hw, SW_SHOWNORMAL );

Answer: How to hide/inhibit the console window when launching a Perl script on Windows?
contributed by jdporter 

If you're using ActivePerl, use wperl.exe to run your script. This is a copy of perl.exe that just doesn't create a console window at all. Since you won't have STDIN/STDOUT/STDERR, you won't be able to catch errors. Therefore be sure your script is totally bulletproof before calling it with wperl.exe. 

Using Win32::Process::Create, You could have a "starter" script which launches your script as a detached process: 
Код

Win32::Process::Create( $Obj,
  "$perl_path/perl.exe",
  "perl test.pl",
  0, DETACHED_PROCESS,
  "$hs_path/scripts"
) or die ErrorReport();

Answer: How to hide/inhibit the console window when launching a Perl script on Windows?
contributed by jdporter 

The works when the window you want to hide isn't the one you're interacting with. This is useful, because it lets you see program print output (including error messages) if you run it from a command prompt, but it hides the window if you launch the script from Explorer, Start>Run, etc. 
Код

use Win32::API;


sub hide_console
{
    Win32::API->new( 'kernel32', 'FreeConsole', [], 'I' )->Call();
}

Answer: How to hide/inhibit the console window when launching a Perl script on Windows?
contributed by jdporter 

You can create a standalone .exe file using PerlApp (from ActiveState's PDK) and use the -gui option which will suppress the DOS window on program startup. 
Answer: How to hide/inhibit the console window when launching a Perl script on Windows?
contributed by jdporter 


If you want to stop console windows from popping up when you call commands with backticks, try adding the following block to your script: 
BEGIN
{
    Win32::SetChildShowWindow(0) 
        if defined &Win32::SetChildShowWindow;
}


Это сообщение отредактировал(а) shamber - 10.11.2008, 20:39
PM MAIL Jabber   Вверх
shamber
Дата 10.11.2008, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



А вот для того чтобы спрятать из Task Manager нужно очень постараться
можете почитать тут или здесь
Да в этих статьях нет ничего про перл, но и готовой инфы вы врядли найдете.


Это сообщение отредактировал(а) shamber - 10.11.2008, 20:43
PM MAIL Jabber   Вверх
tolkien
Дата 11.11.2008, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Вам надо просто в MFC посмотреть как это делается на С++. Т.е узнать какие win api функции вызываются. И найти к ним интерфейс в perl
PM MAIL   Вверх
kirufka
Дата 11.11.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 2.10.2008
Где: Москва

Репутация: нет
Всего: нет



Ммм.. всем спасибо smile Точно WinApi smile 
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.