forum.chuguev.net _ Программирование и железо _ Вопрос по Delphi

: Arhangel 07.11.2007, 17:54

У меня возник вопрос: можно ли с помощью делфи создать прогу, которая запрещала бы чтобы её копировали. И если да, то подскажите как это сделать.

: S_T_A_S 07.11.2007, 18:33

(Arhangel @ 07.11.2007, 17:54) *
У меня возник вопрос: можно ли с помощью делфи создать прогу, которая запрещала бы чтобы её копировали. И если да, то подскажите как это сделать.

не знаю как с прогой но видео я так делал нельзя было: переименовать, включить переместить скопировать. В это я в свойствах изменял чтобы только мой пользователь и на моём компе его можно было открыть и ещё че то в администрировании. Переустановил винду и ничего с ним я не смог сделать ни какие взломщики его не брали пришлось форматнуть диск D
Так что Архангел полазь в свойствах!

: Arhangel 07.11.2007, 19:35

ну это я знаю, но мне надо чтобы это сделать так, что бы после первого запуска недьзя было ни копировать ни перемещать файл, а переименование мне по барабану.

: Vedmak 07.11.2007, 19:35

Сделать помоему можно, но прога должна быть все время запущена. Тоесть стартовать при запуске системы, и тихо себе висеть в процессах. Иначе и правда попробовать настроить винду.

: Arhangel 08.11.2007, 18:45

Народ, так что никто не знает?

: Vedmak 08.11.2007, 19:08

Ты бы определился сначала что тебе надо. Например подойдет тебе предложенный мною вариант?

: Arhangel 08.11.2007, 19:10

Нет. Такой вариант мне не подходит. Это крайний случай.

: Arhangel 17.11.2007, 00:23

Ещё один вопрос

Как сделать обработку событий для прокрутки колеса мыши ?

: Vedmak 17.11.2007, 19:04

Значит так:
1. Открываем папку с учебниками по делфи.
2. Ищем там "Delphi Russian Knowledge Base".
3. Вводим в строку поиска "колесико", потом "Wheel".
4. Видим пример с использованием WM_MOUSEWHEEL. Берем его на заметку.
5. Запускаем делфи. Изучаем события формы и TApplicationEvents.
6. Находим событие OnMouseWheel. Устанавливаем на него курсор, смело жмем F1.
7. Аналогично поступаем с OnMouseWheelDown и OnMouseWheelUp.
8. Если до сих пор непонятно, смотрим демку:  MouseWheel.zip ( 197.98 ) : 163


P.S. На все это тратим 5 минут (на написание этого ответа ушло 25).

: Arhangel 17.11.2007, 23:10

Спасибо. Уже разобрался. Теперь думаю ещё над одной задачкой. smile.gif

: Arhangel 05.02.2008, 17:40

Я вот уже несколько дней никак не могу сообразить как сделать так, чтобы моя программы всегда была поверх всех окон. Подскажите пожалуйста как это сделать.

: Vedmak 07.02.2008, 15:17

У формы есть свойство FormStyle, это раз. У объекта Application есть метод RestoreTopMosts, который желательно вызывать в таймере раз в 5 минут, это два. Ставим мышку на TForm и жмем F1, это три. Если есть какие-то проблемы с переводом, можно юзать Lingvo. wink.gif

: Arhangel 07.02.2008, 16:51

(Vedmak @ 07.02.2008, 15:17) *
У формы есть свойство FormStyle, это раз.

Это мне не подходит, не всегда форма поверх всех окон.
(Vedmak @ 07.02.2008, 15:17) *
У объекта Application есть метод RestoreTopMosts, который желательно вызывать в таймере раз в 5 минут, это два.

А про это если можно, то чуточку подробнее.

(Vedmak @ 07.02.2008, 15:17) *
Ставим мышку на TForm и жмем F1, это три. Если есть какие-то проблемы с переводом, можно юзать Lingvo. wink.gif

И получаю: "Loading Online Help...", а интернета у меня нет smile.gif

: UkrZilla 07.02.2008, 18:38

Учите WinAPI!
SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, Form1.Width, Form1.Height, 0);

: Arhangel 07.02.2008, 19:03

(UkrZilla @ 07.02.2008, 18:38) *
Учите WinAPI!

С удовольствием. А не будите ли вы настолько любезны, что подбросите мне учебничек по WinAPI ?

: UkrZilla 07.02.2008, 20:06

(Arhangel @ 07.02.2008, 19:03) *
С удовольствием. А не будите ли вы настолько любезны, что подбросите мне учебничек по WinAPI ?

MSDN

: Vedmak 07.02.2008, 22:41

UkrZilla у парня вообщето интернета нет, а вы его в MSDN тыкаете. Кроме того вопрос был все же по Delphi wink.gif
Arhangel по WinAPI у меня на хабе есть пара книжек вроде. Хотя в справке информация полнее и новее должна быть. Кстати справку можно настроить на работу в офлайне.
Итак по сути: для начала нужно выставить нужным образом FormStyle. Но любое виндовое сообщение типа MessageDlg собьет это состояние. Поэтому и надо переодически вызывать RestoreTopMosts, чтобы снова поднять форму наверх в соответствии с FormStyle.
Кстати, если не ошибаюсь эта функция вызывает все тот же SetWindowPos.

: UkrZilla 08.02.2008, 00:40

(Vedmak @ 07.02.2008, 22:41) *
UkrZilla у парня вообщето интернета нет, а вы его в MSDN тыкаете. Кроме того вопрос был все же по Delphi wink.gif
Arhangel по WinAPI у меня на хабе есть пара книжек вроде. Хотя в справке информация полнее и новее должна быть. Кстати справку можно настроить на работу в офлайне.
Итак по сути: для начала нужно выставить нужным образом FormStyle. Но любое виндовое сообщение типа MessageDlg собьет это состояние. Поэтому и надо переодически вызывать RestoreTopMosts, чтобы снова поднять форму наверх в соответствии с FormStyle.
Кстати, если не ошибаюсь эта функция вызывает все тот же SetWindowPos.

MSDN распространяется официально на дисках, т.е. существует полная оффлайн-версия. Я никого никуда не тыкал. Лучшая последняя версия была от 2000 года на 4 дисках, лежит у меня на полке.
Delphi - среда разработки приложений под ОС Windows, где официальный интерфейс взаимодействия приложений с ОС - WinAPI.
Разве мой вариант одной строчкой не помог?

: Vedmak 08.02.2008, 10:44

Если уж на то пошло, то в Application.RestoreTopMosts это реализовано так:

SetWindowPos(HWND(FTopMostList[I]), HWND_TOPMOST, 0, 0, 0, 0,
  SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);

Но зачем делать в ручную то, что уже реализовано в VCL?

: UkrZilla 08.02.2008, 17:52

(Vedmak @ 08.02.2008, 10:44) *
Если уж на то пошло, то в Application.RestoreTopMosts это реализовано так:
SetWindowPos(HWND(FTopMostList[I]), HWND_TOPMOST, 0, 0, 0, 0,
  SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);

Боюсь что это там так не реализовано, иначе бы ваше окно: не двигалось, не изменяло бы размеры и не было бы активным и к тому же состояло из одного заголовка: ширина и высота 0.
Вот свойство формы FormStyle=fsStayOnTop реализует то что нужно.
(Vedmak @ 08.02.2008, 10:44) *
Но зачем делать в ручную то, что уже реализовано в VCL?

Чтобы знать как все реализовано wink.gif

: Vedmak 08.02.2008, 22:13

Знать надо, не спорю. Кстати вот что у меня в справочнике написано:

...
SWP_NOMOVE сохраняет текущую позицию, т. е. игнорирует параметры X и Y
SWP_NOSIZE сохраняет текущий размер окна, т. е. игнорирует параметры cx и cy
SWP_NOACTIVATE при перемещении не активизирует окно
SWP_NOOWNERZORDER сохраняет позицию окна владельца по оси Z

: Vedmak 01.03.2008, 19:17

Внимание всем, кто качал у меня RAD Studio 2007: CodeGear выпустил второй апдейт для справки - основного документа любого Delphi-на. Брать все там же - у меня в хабе.

: Arhangel 01.03.2008, 21:43

А где именно он находится?

: Arhangel 13.03.2008, 22:45

(Vedmak @ 01.03.2008, 20:17) *
Внимание всем, кто качал у меня RAD Studio 2007: CodeGear выпустил второй апдейт для справки - основного документа любого Delphi-на. Брать все там же - у меня в хабе.

Вот у меня возник ещё один вопрос. Этот апгрейд можно ставить сразу же после установки RAD Studio 2007 или сначала нужно установить первый апгрейд?

: Vedmak 14.03.2008, 20:11

Нет, не надо. А вообще в ридми написано, что при установке студии достаточно заменить файлы ее дистрибутива файлами из апдейта.

: Arhangel 14.03.2008, 20:44

Ой а рид я не качал sad.gif

Собственно а теперь вопрос по сути темы.

Если кто-то знает, то подскажите как мне сделать следующее.
У меня некая программа, мне нужно чтобы по нажатию кнопки в Memo1 копировалось название песни которая сейчас играет в Winamp.

: Arhangel 17.03.2008, 00:27

Ну пожалуйста помогите, очень надо.

: Vedmak 17.03.2008, 14:45

В соседнем топике я уже выкладывал один sdk для винампа. Вот второй:  winamp_sdk_0.9.zip ( 32.14 ) : 116
(На самом деле архив - rar, но форум не дает их загружать). А вот исходник готового плагина, который пишет название текущей песни в статус QIP-а:  2qip_src.zip ( 49.9 ) : 127
(тоже rar). Не знаю поможет вам это или нет. Конечно простейший вариант если бы винамп писал название текущей песни в заголовок окна.
Больше ничем помочь не могу т к winamp не использую.

: Arhangel 17.03.2008, 15:23

Спасибо, буду разбираться, может и найду то, что мне поможет

: Arhangel 17.03.2008, 16:04

Еще у меня есть такой вопросик: Какую программу посоветуете для создания файлов ресурсов *.res ? А то brcc32.exe у меня не запускается sad.gif

: Vedmak 17.03.2008, 17:39

brcc32.exe штука консольная, может вы от него окошка ждете? А вообще рекомендую Restorator.

: Arhangel 17.03.2008, 18:26

При его запуске выдает ошибку sad.gif . А за Restorator спасибо хорошая программа.

И еще одно. Вот часть кода

procedure TProgra.knopka_soxranitClick(Sender: TObject);
var
  tex:string;
  fi : text;
begin
  if CheckBox_poverh.Checked=true then
    begin
      tex:='1';
      memo2.Lines.Add(tex);
      memo2.lines.SaveToFile(SaveTextFileDialog2.FileName);
    end
  else if CheckBox_poverh.Checked=false then
    begin
      tex:='0';
      assign (fi, 'save.txt');
      rewrite(fi);
      write(fi,tex);
    end;
end;
Постоянно выкидывает ошибку. Что я не правильно написал? Хотя можно обойтись и без раскалевского кода, но хочется сделать именно так, но не получается.

: Vedmak 17.03.2008, 19:29

Что за ошибка и в какой строке?

: powerslave 17.03.2008, 20:37

Навскидку - задан ли SaveTextFileDialog2.FileName?
файл кто будет закрывать?

: Arhangel 17.03.2008, 21:04

Ошибка в

fi : text;
и
assign (fi, 'save.txt');
поставил закрытие но не помогло.

Навскидку - задан ли SaveTextFileDialog2.FileName?
Задано

: Vedmak 17.03.2008, 22:34

А, ну да. Типа text в делфи нету, есть TextFile. Assign тоже заменен на AssignFile, а закрытие соответственно по CloseFile.
P.S. В данном случае выражение "if CheckBox_poverh.Checked=false then" не имеет смысла. Т к CheckBox_poverh.Checked может быть или True или False. Значит все что после else будет выполнено только когда CheckBox_poverh.Checked=false.

: Arhangel 17.03.2008, 22:46

clap2.gif Спасибочки помогло smile.gif

: Arhangel 18.03.2008, 15:48

Впервые понадобилось разделить пункты в MainMenu горизонтальной линией. Как мне это организовать?

: powerslave 18.03.2008, 16:11

Вставляешь пункт с названием "-" (минус).

: Arhangel 18.03.2008, 16:28

blin.gif от же шь блин а я себе голову морочил. Спасибо за совет и подсказку в одном лице.

: Arhangel 20.03.2008, 18:16

Я наверное последним временем надоел уже вам с вопросами. Но мне нужна ещё одна подсказка. Как проверит существует определенный файл или нет?

: Vedmak 20.03.2008, 19:41

Попробуй FileExists.

: Arhangel 20.03.2008, 19:58

? А можно чуточку подробнее?

: Vedmak 20.03.2008, 22:00

Ну глянь в справку. Этой функции передаёшь строку - путь и имя файла, если он существует, получишь True.

: Arhangel 22.03.2008, 07:59

Наконец попробовал это способ и помогло. Большое спасибо.

: Arhangel 21.04.2008, 20:23

как присвоить некой переменной числовую строку из memo ?

: powerslave 21.04.2008, 20:31

Если я не ошибаюсь, то в мемо все храниться в одной строковой переменной.
Можно разделить эту строку на несколько по символам конца строки.
Потом получившуюся подстроку StrToFloat.

: Arhangel 21.04.2008, 20:37

сейчас попробуем

: Vedmak 11.06.2008, 19:06

http://www.delphikingdom.com/asp/winners.asp?BonusID=10
Эх, а так хотелось получить лавровый венок и щит к своему нику crybaby.gif
P.S. Там мой ник Torbins.

: HakMax 22.06.2008, 18:17

(Arhangel @ 07.11.2007, 18:54) *
У меня возник вопрос: можно ли с помощью делфи создать прогу, которая запрещала бы чтобы её копировали. И если да, то подскажите как это сделать.


Попробуй через драйвер, или DLL (на счет второго не уверен), вобщем идея следующая: отлавливать системные события копирывания. Сам не пробывал, так что это всего лишь догадка.

: Arhangel 08.08.2009, 18:55

Здравствуйте. Давненько уже не просил помощи, да в прочем и не баловался программированием тоже давненько.

Но все возвращается на круги своя. Вот так и я возвращаюсь к вам за помощью.

Возникла у меня проблемка когда я пытаюсь загрузить из интернета XML файл

procedure TMainForm.Button2Click(Sender: TObject);
begin

  XMLDocument1.LoadFromFile('http://www.godville.net/gods/api/MadeinChuguev.xml');
  XMLDocument1.Active := true;

  Label1.Caption := XMLDocument1.DocumentElement.ChildNodes['name'].Text;

end;


Но вместо того чтобы загрузить файл мне выскакивает вражеское сообщение:



Укажи мне в чем моя ошибка, что я делаю неправильно, так сказать наставьте на путь истинный.



P.S. Я балуюсь в CodeGear RAD Studio 2009

: Arhangel 09.08.2009, 01:21

У ещё одно.

У меян есть переменная типа text как мне из неё сделать integer ?

: Arhangel 26.08.2009, 09:08

Люди, ну неужели никто не знает как мне помочь?

: Vedmak 29.08.2009, 16:11

XMLDocument1.LoadFromFile('http://www.godville.net/gods/api/MadeinChuguev.xml');
Насколько я понимаю, этот метод предназначен для работы с файлами на локальном диске. Поэтому вам сначала нужно загрузить файл из интернета, а уже потом открывать.

У меян есть переменная типа text как мне из неё сделать integer ?
Вроде на прошлой странице уже был подобный вопрос, и был ответ. Но на всякий случай напомню про функцию StrToInt.

: Vedmak 19.09.2009, 11:41

Выложил в хабе много видео с онлайн-конференции CodeRage4. Новости делфи и VCL, современные технологии, советы профессионалов... вобщем интересного много. Качаем: magnet:?xt=urn:tree:tiger:HFJUAPQJ3TEZCZSJCYQTJOKEMJQE7IZBDQYZ2FY&xl=42068157&dn=27259_what_s_new_in_the_vcl.ZIP (в той же папке много других видео-презентаций)
P.S. Все видео на английском wink.gif

: Slaventiy 20.01.2011, 13:21

Arhangel,
во-первых скачай себе какую-нибудь книжку по Делфи, что бы иметь хоть приблизительное понятие о существующих функциях и т.д. (можешь кстати пройти курс на http://intuit.ru)

во-вторых, дабы сделать програмку, которую нельзя было бы копировать или перемещать, тут не всё так просто...1) она должна быть постоянно запущена, либо как процесс системы, либо как СОМ-сервис, ну или еще каким-либо образом, но так что бы пользователь на неё не наткнулся, пока она в фоновом режиме...
2) она должна отлавливать все события копирования/перемещения, а это не так просто потому как есть оч много прог которые своими алгоритмами и процедурами копируют, типа Тотал Командера ну и т.д.
3) тут ты должен совершать поиск по всем винтам и флешкам с заданным периодом
4) можно еще конечно поставить програмке атрибуты типа Системый/ТолькоДляЧтения, но тот же Тотал ими пренебрегает...

вывод: такую вещь сделать практически нереально (но возможно), так что можешь отбросить подобную идею до тех пор пока не будешь знать Делфи и ВинАпи в идеале smile.gif

: Vedmak 21.01.2011, 11:10

Думаю Arhangel уже давно забыл, что такое Delphi smile.gif

Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)