Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2012, 12:48   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
Вопрос Поиск по названию с отчётом.

Пожалуйста подправьте

Идея заключается в том что при нажатии на кнопку будет прятаться окно (с названием вписано в edit), ещё раз при нажатии на эту кнопку, показывается спрятанное окно.
Код работает нормально когда название окна находит.
Как исправить и чтоб сообщало что окно не было найдено?

Код:

if ShowWindow(FindWindow(nil, PChar(sEdit2.Text) ), sw_show) then
begin
ShowWindow(FindWindow(nil, PChar(sEdit2.Text)), sw_hide) ;
smemo1.Lines.Add('Окно '+sedit2.Text+' было скрыто от Ваших глаз!')
end
else
smemo1.Lines.Add('Окно '+sedit2.Text+' показано!') ;
P.S. Знаю я в коде тупанул, но главное что он работает с горем пополам, а для меня это уже прогресс
Спасибо.
Jleksern вне форума Ответить с цитированием
Старый 28.01.2012, 14:53   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Функция FindWindow вернёт Handle найденного окна, если Handle < 0 then окно не найдено.
FaTaL вне форума Ответить с цитированием
Старый 28.01.2012, 14:58   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

а можно пожалуйста по подробнее русским языком.
Я не очень давно в этим всем познакомился.
Как конкретно воспользоваться вашим советом?
Jleksern вне форума Ответить с цитированием
Старый 28.01.2012, 16:41   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Код:
if FindWindow(nil, PChar(sEdit2.Text)) > 0 then
ShowMessage ('Окно найдено') else
ShowMessage ('Окно не найдено');
FaTaL вне форума Ответить с цитированием
Старый 28.01.2012, 18:25   #5
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

да но, не делает основную задачу - СПРЯТАТЬ и ПОКАЗАТЬ окно которое название в sedit2.text.
При этом если спрятало окно, оно сообщает в memo что оно спрятало, а если оно окно показало - то так и пишется что окно показано.
Если не нашло окно оно пишет что не найдено окно.
Jleksern вне форума Ответить с цитированием
Старый 28.01.2012, 18:47   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

так! Точно не уверен
Код:
var
    h: hWnd;
{........................................}
{........где-то в теле..............}
h := FindWindow(nil, PChar(sEdit2.Text));
if h > 0 then
begin
    if IsIconic(h) then
    begin
        ShowWindow(h, sw_show) ;
        smemo1.Lines.Add('Окно '+sedit2.Text+'было развёрнуто!')
    end
    else
    begin
        ShowWindow(h, sw_hide) ;
        smemo1.Lines.Add('Окно '+sedit2.Text+'было свёрнуто!')
    end;
end
else
    ShowMessage ('Окно не найдено');
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 28.01.2012, 19:06   #7
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Хакер, да, но трабла есть.
Работает вот так.
При отсутствии нужного имя - сообщает что не найдено. ОК.
Если находит тогда делает его невидимым его. Всё Ок.
Но если попробовать "показать" окно которое мы сделали невидемым тогда выполняется опять это, почему-то.
Код:
        ShowWindow(h, sw_hide) ;
        smemo1.Lines.Add('Окно '+sedit2.Text+'было свёрнуто!')
и так пишется постояно пока в процессе весит окно.
Если я процесс с невидимым окном убью тогда будет писаться ОКНО НЕ НАЙДЕНо.
(Я так подробно написал что было более яснее).

И ещё одно... Спасибо всем за помощь)))

Я буду побывать своим ходом наладить. Но не думаю что получится. По этому тема ещё актуальна.
Jleksern вне форума Ответить с цитированием
Старый 28.01.2012, 19:16   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Так а попробуй заменить IsIconic
на IsWindowVisible
Как то так
Код:
var
    h: hWnd;
{........................................}
{........где-то в теле..............}
h := FindWindow(nil, PChar(sEdit2.Text));
if h > 0 then
begin
    if IsWindowVisible(h) = 0 then
    begin
        ShowWindow(h, sw_show) ;
        smemo1.Lines.Add('Окно '+sedit2.Text+'было показано!')
    end
    else
    begin
        ShowWindow(h, sw_hide) ;
        smemo1.Lines.Add('Окно '+sedit2.Text+'было спрятано!')
    end;
end
else
    ShowMessage ('Окно не найдено');
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 28.01.2012 в 19:19.
Hacker19_90 вне форума Ответить с цитированием
Старый 28.01.2012, 19:39   #9
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Именно так если так как в вашем коде тогда не компилирует.
[Error] Unit1.pas(600): Incompatible types
-------
Если же просто с прошлого примера и заменить IsIconic на IsWindowVisible.
Компилируется но не прячет.
А в memo пишет "Окно HD - Блокнот было показано!"
Jleksern вне форума Ответить с цитированием
Старый 28.01.2012, 19:55   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Чёт нифига не понял!
Где не соответствие типов?
Строчку скопируйте покажите!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убить процессы по их названию xaero93 Помощь студентам 1 30.01.2011 10:24
Выделить колонку по названию Romuald Microsoft Office Excel 4 10.05.2010 11:31
нужна помощь с отчётом KurtWagner Общие вопросы Delphi 8 01.02.2009 16:05
Помогите с отчётом Axelon Microsoft Office Access 2 31.05.2008 14:07