Code: const x = 225; y = 132; w = 102; h = 41; var rc: TRect; bmp: TBitmap; dc: HDC; wnd: HWND; begin bmp := TBitmap.Create; bmp.Width := w; bmp.Height := h; wnd := GetForegroundWindow; dc := GetDC(wnd); BitBlt(bmp.Canvas.Handle, 0, 0, w, h, dc, x, y, SRCCOPY); ReleaseDC(wnd, dc); bmp.SaveToFile('screen.bmp'); bmp.Free; end; x,y - координаты элемента w,h - ширина и высота
Вводят 7е число нужно посчитать сумму двух последних цифр и если она бут равна 1й цифре то выдать труе.
Code: function Aga(num: Integer): Boolean; var s: string; l: Integer; begin Result := False; s := IntToStr(num); l := Length(s); if StrToInt(s[l])+StrToInt(s[l-1]) = StrToInt(s[1]) then Result := True; end;
1 Nightmarе для больших файлов тебе нужно переписывать сам алгоритм отправки. т.е. подгрузку реализовывать внутри самой функции отправки. Но вообще лучше проверить размер файлов и если размер больше 64 кила. ТО выделить буфер на 64 кила и читать пока читается и сразу отсылать.
Привет всем! запускаю программу с флешки и эта же программа должна извелч эту флешку но вот проблема!! будет ошибка так как запущенная прога не дает этого сделать! пробовал через Dll запустил процедуру из длл и убил прогу но тоже не проходит! как это можно исправить? нужно ли копировать длл на другой диск? или можно ее как то загрузить в память чтоб она не "зависела" от свой копии на диске?
1) получаешь адрес папка temp 2) копируеш туда прогу 3) запускаеш ту прогу передав к примеру путь откуда был ты запущен 4) завершаеш свою работу Копия проги видя что в paramstr есть путь, ждет 1-2 секунды - чтобы дождаться завершения предыдущей копии, а дальше делает те действия которые должна делать.
Привет всем у меня есть поле TEdit в котором написано parametr 142sds465, как 'Сказать' делфи чтобы он записал всё что после 'parametr ' в переменную?
используй работу со строками: например Temp:=Copy(TEdit.Text,10,9); ну если длина строки изменяется, то соответсвенно меняй второй и третий параметры
S[N]EP, или так: Code: var sPos: integer temp: string; begin sPos := pos ( ' ', Edit1.Text ); if sPos <> 0 then temp := copy(Edti1.Text, sPos + 1, length ( Edit1.Text ) ); end; Вообще так правильнее будет. Учитывая что у тебя строка формата "параметр код", ибо данный код ищет пробел
slesh а как быть если длл отвечает за отключение девайса? получится ли так копировать длл вызвать их нее функцию и закрыть программу длл успеет сделать своё дело или она тоже выгрузится при закрытии?
2 transserg тебе нужно все файлы который запускаются (exe + dll) скопировать во сременную папку и оттуда перезапустить. Просто в DLL должна быть функция которая отключает девайс по его пути. ну или типа того. для этого я и предлогаю передавать из первой проги во вторую адрес откуда запущена
slesh а что если сделть так, из ресурсов программы извеч маленький EXE а не копировать всю прогу целиком и запускать его с параметром, после запуска уже иничтожать его? да еще lkk может "жить" без пограммы которая ее заустила? тоесть выполнять свои функции и выгрузиться
може и так сделать. но DLL загружена до тех пор пока программа работает. после завершения работы проги DLL тоже выгружается. А если ты DLL загрузиш с флешки, то тогда ты отмантировать её несможеш до тех пор пока не выгрузиш DLL
Как в дельфи с помощью ресурсов (.res файлов) запустить программу из памяти (не копируя её куда-либо).
Уважаемые знатоки! Имееются компоненты Image1 и Image2, в первом - картинка. Внимание вопрос: как сделать копирование из Image1 в Image2 необходимой мне части картинки (условно - координаты: 100, 50 ; размер: 20х30)?
Code: const x = 100; y = 50; w = 20; h = 30; x2 = 0; y2 = 0; begin Image2.Canvas.CopyRect(Rect(x2, y2, w, h), Image1.Canvas, Rect(x, y, w+x, h+y)); end; x2, y2 - это координаты, определяющие куда нужно вставить часть изображения в Image2
Создай в блокноте *.rc файл с таким текстом (например) Code: TESTFILE EXEFILE C:\Windows\Notepad.exe Скомпилируй при помощи brcc32.exe в res файл. Добавляешь такую строку в проект Code: {$R MYRES.RES} И полный сорец Code: var Form1: TForm1; NOTEPAD_FILE: string; implementation {$R *.DFM} {$R MYRES.RES} function GetTempDir: string; var Buffer: array[0..MAX_PATH] of Char; begin GetTempPath(SizeOf(Buffer) - 1, Buffer); Result := StrPas(Buffer); end; // Extract the Resource function ExtractRes(ResType, ResName, ResNewName: string): Boolean; var Res: TResourceStream; begin Result := False; Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType)); try Res.SavetoFile(ResNewName); Result := True; finally Res.Free; end; end; // Execute the file procedure ShellExecute_AndWait(FileName: string); var exInfo: TShellExecuteInfo; Ph: DWORD; begin FillChar(exInfo, SizeOf(exInfo), 0); with exInfo do begin cbSize := SizeOf(exInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); ExInfo.lpVerb := 'open'; lpFile := PChar(FileName); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@exInfo) then begin Ph := exInfo.HProcess; end else begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do Application.ProcessMessages; CloseHandle(Ph); end; // To Test it procedure TForm1.Button1Click(Sender: TObject); begin if ExtractRes('EXEFILE', 'TESTFILE', NOTEPAD_FILE) then if FileExists(NOTEPAD_FILE) then begin ShellExecute_AndWait(NOTEPAD_FILE); ShowMessage('Notepad finished!'); DeleteFile(NOTEPAD_FILE); end; end; procedure TForm1.FormCreate(Sender: TObject); begin NOTEPAD_FILE := GetTempDir + 'Notepad_FROM_RES.EXE'; end; Вроде бы вот так. После выполнения файл удалится. Сорец не мой, к сожалению автора не знаю.