Вопрос № 53113: Сложилась такая ситуация, вообщем есть программа которую необходимо закрывать и запусакть каждые 30 минут. Я уже написал отсчет времени и запуск программы через определенный интерввал времени. Осталось только закрыть программу. Но посколько программа...Вопрос № 53121: Здравствуйте
Подскажите как написать процедуру которая после слова ставила пробел и вставляла слова "тел",
и ее использывание, просто есть тесктовые файла, там каждая фамилия начинаеться с новой строки...Вопрос № 53122: Использую КOL, и вот теперь удмаю как можно использовать его вместе с VCL, где читал,что можно. Стоит D7. Помогите если знаете чем....Вопрос № 53169: Привет, коллеги. Присоветуйте компонент - нужно подобие StringGrid'а, но чтобы можно было в заголовке в две строки писать. Вообще хотелось бы подобие DBGridEh,
но без привязки к Dataset. Чтобы можно было напрямую в Grid писать, без таблицы. Спасибо.<...Вопрос № 53181: Здравствуйте.
Хотелось бы узнать, как можно добавить свой пункт в контекстное меню проводника, поискал в нете ничего путного не нашел. Если не трудно с примером.
..Вопрос № 53189: Добрый день, уважаемые!
КАк отследить, попадает ли мышь в регион...
Проблема такая, на канве форме нарисованы прямоугольник, эллипс и много угольник. ТАк вот, нужно сделать так: если мышь попадает в прямоугольник, то прямоугольник закрашивает...
Вопрос № 53.113
Сложилась такая ситуация, вообщем есть программа которую необходимо закрывать и запусакть каждые 30 минут. Я уже написал отсчет времени и запуск программы через определенный интерввал времени. Осталось только закрыть программу. Но посколько программа все время находится в трее то через FindWindow не получиться сделать.
Я знаю имя этой программы и имя процесса (IpmSrv.exe), так вот как мне выключать эту программу снятием процесса,
Отвечает: sir henry
Здравствуйте, Пономарев Евгений Виктороич!
Процесс можно закрыть либо с помощью универсальной функции CloseHandle(), либо с помощью функции TerminateProcess(). Параметром и там и там служит хэндл процесса. Кроме того второй функции нужно задать код выхода, который сообщает ОС причину выхода. Вторая функция предпочтительнее, т.к. она завершает все связанные с процессом потоки, если у Вас программа многопоточная.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 24.08.2006, 13:34
Отвечает: Coupler
Здравствуйте, Пономарев Евгений Виктороич!
Функция для закрытия - в приложении. Так можно убить прогу, которая не запрещает открытие своего процесса с флагом PROCESS_TERMINATE. Допишите в uses модуль tlhelp32!
function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 24.08.2006, 14:07
Вопрос № 53.121
Здравствуйте
Подскажите как написать процедуру которая после слова ставила пробел и вставляла слова "тел",
и ее использывание, просто есть тесктовые файла, там каждая фамилия начинаеться с новой строки
procedure Obr(fileName:string);
var Tf:TextFile;
A:array of string;
i:integer;
begin
i:=0;
Setlength(A,i);
AssignFile(Tf,FileName);
reset(Tf);
while not(eof(Tf)) do begin
inc(i);
Setlength(A,i);
readln(Tf,A[i]);
A[i]:=trim(A[i])+' тел.';
end;
CloseFile(TF)
end;
--------- Даже если тебя съели, у тебя есть два выхода
Ответ отправила: Taha (статус: 1-ый класс)
Ответ отправлен: 24.08.2006, 15:28
Вопрос № 53.122
Использую КOL, и вот теперь удмаю как можно использовать его вместе с VCL, где читал,что можно. Стоит D7. Помогите если знаете чем.
Отправлен: 24.08.2006, 14:32
Вопрос задал: CJ (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, CJ!
Не надо его вместе с VCL использовать, т.к. смысл в использовании KOL полностью пропадет. Вместе с KOL идет специальная библиотека зеркальных классов для визуального проектирования, используйте ее.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 25.08.2006, 07:13
Вопрос № 53.169
Привет, коллеги. Присоветуйте компонент - нужно подобие StringGrid'а, но чтобы можно было в заголовке в две строки писать. Вообще хотелось бы подобие DBGridEh, но без привязки к Dataset. Чтобы можно было напрямую в Grid писать, без таблицы. Спасибо.
P. S. Скоро кончится лето...
Отвечает: sir henry
Здравствуйте, Zлоумышленник!
http://www.torry.net/pages.php?id=114
Выбирайте, к чему душа лежит. :)
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 25.08.2006, 07:19
Отвечает: Taha
Здравствуйте, Zлоумышленник!
а вас не устроит такой вариант:
StrinGrid1.FixedRows=2 ;
?
--------- Даже если тебя съели, у тебя есть два выхода
Ответ отправила: Taha (статус: 1-ый класс)
Ответ отправлен: 25.08.2006, 12:46
Вопрос № 53.181
Здравствуйте.
Хотелось бы узнать, как можно добавить свой пункт в контекстное меню проводника, поискал в нете ничего путного не нашел. Если не трудно с примером.
Отправлен: 24.08.2006, 23:42
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Mo-skin
Здравствуйте, Dimon007!
Пример ContMenu (поставляется с Delphi в папке DEMOSACTIVEX SHELLEXT). В этом примере для объектов типа "проект Delphi" добавляется возможность запуска компилятора в командной строке. При вызове метода QueryContextMenu нужный пункт добавляется с помощью функции InsertMenu.
function QueryContextMenu (Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT) : HResult; stdcall;
Добавляет пункт к системному контекстному меню
function InvokeCommand(var- Ipici: TCMInvokeCommandlnfo): HResult; stdcall;
Осуществляет вызов обработчика
function GetCommandString (idCmd, uType: UINT; pwReserved: POINT; PszName: LPSTR; cchMax: UINT) : HResult; stdcall;
Возвращает описание добавленного пункта меню (подсказку или полное название)
Параметры метода QueryContextMenu означают следующее:
Menu — дескриптор системного меню;
IndexMenu — позиция в меню, в которую следует вставить пункт (пункты);
IdCmdFirst,IdCmdLast — диапазон допустимых значений для идентификаторов вставляемых пунктов меню;
uFlags — набор флагов, главные из которых означают:
CMF_NORMAL — обычный вызов контекстного меню, пункты могут быть добавлены. Значение этого флага нулевое, проверять его следует, очистив все биты в параметре uFlags, кроме пяти младших (маска $1F);
CMF_DEFAULTONLY — устанавливается, если пользователь задал с объектом действие по умолчанию (например, двойной щелчок). В этом случае пункты меню добавляться не должны;
CMF_VERBSONLY — устанавливается, если меню создается для ярлыка объекта, а не для самого объекта. В этом случае многие пункты меню создаваться не должны;
CMF_EXPLORE — устанавливается, если меню создается для объекта, находящегося на левой панели Проводника.
//[Иллюстрированный самоучитель по Delphi для профессионалов ]
Приложение:
--------- Чем больше женщину мы меньше, тем больше меньше мы ее!
Ответ отправил: Mo-skin (статус: 2-ой класс)
Ответ отправлен: 25.08.2006, 00:15
Вопрос № 53.189
Добрый день, уважаемые!
КАк отследить, попадает ли мышь в регион...
Проблема такая, на канве форме нарисованы прямоугольник, эллипс и много угольник. ТАк вот, нужно сделать так: если мышь попадает в прямоугольник, то прямоугольник закрашивается зеленым, если в эллипс- красным, в многоугольник- синим.
С уважением и надеждой, Гном..
Отправлен: 25.08.2006, 06:14
Вопрос задал: Gnom (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: sir henry
Здравствуйте, Gnom!
У формы есть событие OnMouseMove, в качестве параметров которого есть и координаты мыши (X, Y). Внесите в этот метод проверку, попадают ли эти координаты в заданый прямоугольник и если да, то тут же его и раскрашивайте.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 25.08.2006, 07:25
Отвечает: Mexes
Здравствуйте, Gnom!
Можно воспользоваться функциями WinAPI. Находится ли точка в прямоугольнике можно функцией PtInRect(const Rect: TRect; const P: TPoint): Boolean.
Для более сложных фигур есть функция PtInRegion(RGN:HRGN;X,Y:Integer):BOOL. Первый параметр - дескриптор региона. Создать эллиптический регион можно функцией CreateEllipticRgn(p1,p2,p3,p4:Integer): HRGN, в параметрах которой надо указать координаты противоположных углов прямоугольника, в который будет вписан эллипс. Для многоугольника надо воспользоваться функцией CreatePolygonRgn(const Points;Count,FillMode:Integer):HRGN. Первый параметр - массив точек TPoint, второй - количество этих точек. Третий парметр
должен быть равен ALTERNATE или WINDING. Он будет иметь значение, если многоугольник имеет самопересечения. В первом случае можно получить "дырявый" многоугольник, во втором многоугольник заполняется полностью (можно посмотреть пример: http://club.shelek.com/print.php?id=98).
К слову, способ с PtInRegion можно применять вместо PtInRect, создав прямоугольный регион функцией CreateRectRgn.
После работы с созданными регионами их следует удалить функцией DeleteObject. Успешно ли созданы регионы можно выяснить, сравнив результат функции сравнения с нулем (если 0 - регион не создан).
Думаю, с координатами вершин Вы разберетсь, они должны соответствовать координатам на клиентской области компонента, отлавливающего координаты мыши (OnMouseDown, OnMouseMove и т. д.).
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 25.08.2006, 11:19
Отвечает: Melamed
Здравствуйте, Gnom!
В допольнении к предыдущему ответу, посоветую для каждой фигуры создать свой регион с
помошью таких API функций, как CreateRectRgn, CreatePoligonRgn, CreateEllipticRgn и другиx, в зависимости от фигур. Координаты
080; размеры регионов должны соответствовать размерам и месторасположению фигур в окне.
С помошью API функции PtInRegion определяешь, находится точка внутри региона или за его пр&
#1077;делами.
Ответ отправил: Melamed (статус: 3-ий класс)
Ответ отправлен: 25.08.2006, 11:20