Вопрос № 17667: Привет! Существует ли разница между следующими строками кода:
var p: Pointer;
p2: function(Y):X;
------------------------------------------
p:= GetProcAddress(...);
и
@p2:= GetProcAddres(...);
----------------------...Вопрос № 17671: Здравствуйте, уважаемые эксперты. Меня интересует такой вопрос: вообщем мне надо такую программу, которая под учетной записью "Гость" скрывает панель задач и блокирует кнопку пуск, тоетсь чтобы клавиша win не открывала меню пуск, единственн...Вопрос № 17685: Уважаемые эксперты!
Почему под ХР звук на спикер выводится Beep(100,200) а под Win98 таким образом ничего не слышно.
С уважением Антон.
...Вопрос № 17686: сБЮФЮЕЛШЕ ЩЙЯОЕПРШ, ЙЮЙ БН БПЕЛЪ БШОНКМЕМХЪ ОПНЦПЮЛЛШ ДНАЮБХРЭ ЙНКНМЙС
Б DBGrid Ю ГЮРЕЛ САПЮРЭ ЕЕ. ...Вопрос № 17706: Добрый день!
Знаю, как запустить файл - примерно так: ShellExecute(0, nil, PChar('send.bat'),
nil, nil, SW_SHOWNORMAL);
А как запустить на выполнение командную строку? Пока извращаюсь - строку записываю в батник и запускаю его, но имхо эт...
Вопрос № 17667
Привет! Существует ли разница между следующими строками кода:
var p: Pointer;
p2: function(Y):X;
------------------------------------------
p:= GetProcAddress(...);
и
@p2:= GetProcAddres(...);
------------------------------------------
Всегда присваиваю адрес функции указателю p хотя в документации к Delphi адрес, возвращаемый GetProcAddress присваивается всегда к процедурным типам. Почему этот адрес просто не присвоить указателю и не объявлять процедурный тип? Спасибо за содействие. Всего хорошего.
Отправлен: 01.03.2005, 18:25
Вопрос задал: Алексей Петрович Вульфенштейн (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: John Freeman
Здравствуйте, Алексей Петрович Вульфенштейн!
Не соответствует концепции pascal - такое лучше всего юзать как
asm
push ...
...
call getprocaddress
push x
call eax
mov destination,somevalue_or_reg
end;
и не надо [censored] даже с объявлением функции!
Ответ отправил: John Freeman (статус: Специалист)
Отправлен: 01.03.2005, 18:42
Отвечает: sir henry
Здравствуйте, Алексей Петрович Вульфенштейн!
Дело в том, что процедурный тип - это тоже самое, что и процедура. Процедуру можно запустить на выполнение, а просто указатель нельзя. :)
Другими словами вот что происходит:
1. Вы загружаете какую-то библиотеку
2. Из этой библиотеки вы получаете адрес какой-то процедуры, которую хотите запустить для получения нужных Вам результатов.
3. А вот теперь, чтобы запустить эту процедуру по полученому адресу, Вы запускаете процедурный тип переменной.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 02.03.2005, 12:13
Вопрос № 17671
Здравствуйте, уважаемые эксперты. Меня интересует такой вопрос: вообщем мне надо такую программу, которая под учетной записью "Гость" скрывает панель задач и блокирует кнопку пуск, тоетсь чтобы клавиша win не открывала меню пуск, единственное что может разблокировать - это определённая комбинация, хотя мне все равно, главное чтобы не была видна панель задач в Госте и блокировалася кнопка ПУСК! Вообщем если у кого есть такая программа или может если у кого есть возможность написать такую, то пожалуйста
ответьте...
Приложение:
Отправлен: 01.03.2005, 20:01
Вопрос задал: Dmitriy (статус: Студент)
Всего ответов отправлено: 1
Отвечает: Мельник Александр Анатольевич
Здравствуйте, Dmitriy!
Вначале необходимо вызвать функцию FindWindow(), чтобы определить handle TaskBar. Затем вызвите функцию ShowWindow(), передав ей в качестве параметра костанту SW_HIDE.
Приложение:
Ответ отправил: Мельник Александр Анатольевич (статус: 3-ий класс)
Отправлен: 01.03.2005, 20:39 Оценка за ответ: 4 Комментарий оценки: Этот код у меня уже есть, я ведь чётко задал вопрос, чтобы эта прога ещё могла блокировать кнопку пуск...
Вопрос № 17685
Уважаемые эксперты!
Почему под ХР звук на спикер выводится Beep(100,200) а под Win98 таким образом ничего не слышно.
С уважением Антон.
Отправлен: 02.03.2005, 07:03
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: sir henry
Здравствуйте, антон!
Потому-что в W9x все параметры этой функции игнорируются.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 02.03.2005, 11:47 Оценка за ответ: 4
Отвечает: Bob Johnson
Здравствуйте, антон! Из мсдн: Windows 95: The Beep function ignores the dwFreq and dwDuration parameters. On computers with a sound card, the function plays the default sound event. On computers without a sound card, the function plays the standard system beep.
* EMan2.0: ---===*** Debug mode ***===---
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.03.2005, 00:43
Отвечает: CJ
Здравствуйте, антон!
Здравствуйте, антон!
Хех. Потому что эти две ОС многим отличаются, основаны они на разных ядрах XP это NT. Ну а 98 это Win9X. И так далее. В процессе программирования можно очень часто встретиться с этой проблемой несовместимости и отличий.
Ответ отправил: CJ (статус: Студент)
Отправлен: 05.03.2005, 09:10 Оценка за ответ: 2
Отправлен: 02.03.2005, 07:08
Вопрос задал: Овсянников С.А. (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: sir henry
Здравствуйте, Овсянников С.А.!
К сожалению не смог расшифровать Ваш вопрос - не могу подобрать кодировку. Извините. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 02.03.2005, 11:52
Отвечает: Boriss
Здравствуйте, Овсянников С.А.!
И я тоже - ну никак!! Что там такое DbGrid?
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 03.03.2005, 09:52
Вопрос № 17706
Добрый день!
Знаю, как запустить файл - примерно так: ShellExecute(0, nil, PChar('send.bat'),
nil, nil, SW_SHOWNORMAL);
А как запустить на выполнение командную строку? Пока извращаюсь - строку записываю в батник и запускаю его, но имхо это и некрасиво и должен быть другой способ. Заранее спасибо.
Отправлен: 02.03.2005, 14:38
Вопрос задал: Loko (статус: Посетитель)
Всего ответов отправлено: 6
Отвечает: Boriss
Здравствуйте, Loko!
Если я правильно Вас понял, то это с помощью
WinExec - самый простой вариант: WinExec('myProg.exe /y', SW_RESTORE);
Но лучше освойте
CreateProcess - WinExec все равно работет через него, но без Вас
Ответ отправил: Boriss (статус: Профессионал)
Отправлен: 02.03.2005, 15:30 Оценка за ответ: 4
Отвечает: rusfaq.ru
Здравствуйте, Loko!
>>А как запустить на выполнение командную строку?
ShellExecute(this->Handle, "open" , "cmd", "/A /C \"xcopy /?\" > c:\\test.log", ".", true);
ShellExecute(this->Handle, "open" , "cmd", "/A /C "xcopy /?" > c:\test.log", ".", true);
З.Ы. Синтаксис С++ (BCB).
З.З.Ы. Не знаю, съест ли бэкслеши, поэтому несколько вариантов
Приложение:
Ответ отправил: rusfaq.ru (статус: 1-ый класс)
Отправлен: 03.03.2005, 00:19 Оценка за ответ: 4
Отвечает: Bob Johnson
Здравствуйте, Loko! надо запускать командный интерпретатор (cmd.exe на windows NT и command.com на windows 9x) с параметром /c и далее без пробела команда, например: cmd.exe /cdir
* EMan2.0: ---===*** Debug mode ***===---
Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 03.03.2005, 00:43 Оценка за ответ: 5 Комментарий оценки: Собственно, главная информация, к-рую я получил. Экспериментировал до этого сам, но додуматься параметр поставить БЕЗ ПРОБЕЛА не смог
Отвечает: sir henry
Здравствуйте, Loko!
Командная строка - в w2k это файл cmd.exe, а в w9x это command.com. Запускайте тот или иной файл в ShellExecute и будет Вам командная строка. :)
Может быть Вы что-то другое имели в виду? Если Вы хотите в командной строке запускать какую-нибудь команду, например PING, то третий с конца параметр в ShellExecute - это строка для дополнительных параметров запускаемой программы.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 03.03.2005, 07:00 Оценка за ответ: 5
Отвечает: Vj
Здравствуйте, Loko!
Как вариант можно так:
var Batf: TStringList;
begin
try
Batf:=TStringList.Create;
except end;
Batf.Add('text'); //в список Batf мы заполняем по одной командной строке text
Batf.Add('text2'); //и так сколько угодно пока не надоест
...
Batf.SaveToFile('send.bat'); //сохраняем все строчки в порядке их добавлений в Batf
ShellExecute(0,nil,PChar('send.bat'),nil,nil,SW_SHOWNORMAL); //собственно, вызываем его. end;
Вот и все. Причем ты вместо текста в ковычках можешь добавлять строки ввиде переменных, которые ты сам смоделировал по своему алгоритму. Т.е. вместо
Batf.Add('text');
ты пишешь
Batf.Add(str); //где str - это переменная типа строка
Но я думаю ты это итак знал.
Ответ отправил: Vj (статус: 10-ый класс)
Отправлен: 04.03.2005, 01:12 Оценка за ответ: 4 Комментарий оценки: Отличный ответ, единственно, что я до этого примерно так и делал и хотел от батника как раз избавиться
Отвечает: CJ
Здравствуйте, Loko!
Точно не помню но один из параметров функции это и есть то что передается параметром к запуску файла. Когда ты в делфях напишешь ShrllExecute( там постепенно будут появляться подсказки, и там что то типа Parammetr.
Ответ отправил: CJ (статус: Студент)
Отправлен: 04.03.2005, 18:55 Оценка за ответ: 4