да, программа пишется на делфи.
Предлагаю с данным вопросом перейти в другую ветку, ибо тут это оффтоп
Как можно получить полную версию программы VRI-cnc
Сообщений 31 страница 46 из 46
Поделиться312008-03-31 17:08:20
Поделиться322008-04-15 17:02:07
Роман у меня предложение. Если сделать привязку не жесткому диску а к процессору т.к. процессор не так быстро сдохнет в отличии от харда.
Да и поменять процессор на компе станке врядли кому придет в голову.
Я для своего собрал комп. а так как жесткий там стоит стары у меня на него нехорошие предчувствия надеюсь до следующей версии проги дотянет.
Поделиться332008-04-15 18:33:21
Поддерживаю "привязку не жесткому диску а к процессору"
Интересный вариант!
Поделиться342008-04-15 20:40:54
если кто в этом шарит (Делфи) кидайте код определения проца посмотрю.
Поделиться352008-04-15 21:51:07
Ну тут может быть уйма вариантов:
unit unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type Tfrm_main = class(TForm) img_info: TImage; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } procedure info(s1, s2: string); end; var frm_main: Tfrm_main; gn_speed_y: Integer; gn_text_y: Integer; const gn_speed_x: Integer = 8; gn_text_x: Integer = 15; gl_start: Boolean = True; implementation {$R *.DFM} procedure Tfrm_main.FormShow(Sender: TObject); var _eax, _ebx, _ecx, _edx: Longword; i: Integer; b: Byte; b1: Word; s, s1, s2, s3, s_all: string; begin //Set the startup colour of the image img_info.Canvas.Brush.Color := clblue; img_info.Canvas.FillRect(rect(0, 0, img_info.Width, img_info.Height)); gn_text_y := 5; //position of the 1st text asm //asm call to the CPUID inst. mov eax,0 //sub. func call db $0F,$A2 //db $0F,$A2 = CPUID instruction mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; for i := 0 to 3 do //extract vendor id begin b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1:= s1 + chr(b); b := lo(_edx); s2:= s2 + chr(b); _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; info('CPU', ''); info(' - ' + 'Vendor ID: ', s + s2 + s1); asm mov eax,1 db $0F,$A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; //06B1 //|0000| |0000 0000| |0000| |00| |00| |0110| |1011| |0001| b := lo(_eax) and 15; info(' - ' + 'Stepping ID: ', IntToStr(b)); b := lo(_eax) shr 4; info(' - ' + 'Model Number: ', IntToHex(b, 1)); b := hi(_eax) and 15; info(' - ' + 'Family Code: ', IntToStr(b)); b := hi(_eax) shr 4; info(' - ' + 'Processor Type: ', IntToStr(b)); //31. 28. 27. 24. 23. 20. 19. 16. // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b := lo((_eax shr 16)) and 15; info(' - ' + 'Extended Model: ', IntToStr(b)); b := lo((_eax shr 20)); info(' - ' + 'Extended Family: ', IntToStr(b)); b := lo(_ebx); info(' - ' + 'Brand ID: ', IntToStr(b)); b := hi(_ebx); info(' - ' + 'Chunks: ', IntToStr(b)); b := lo(_ebx shr 16); info(' - ' + 'Count: ', IntToStr(b)); b := hi(_ebx shr 16); info(' - ' + 'APIC ID: ', IntToStr(b)); //Bit 18 =? 1 //is serial number enabled? if (_edx and $40000) = $40000 then info(' - ' + 'Serial Number ', 'Enabled') else info(' - ' + 'Serial Number ', 'Disabled'); s := IntToHex(_eax, 8); asm //determine the serial number mov eax,3 db $0F,$A2 mov _ecx,ecx mov _edx,edx end; s1 := IntToHex(_edx, 8); s2 := IntToHex(_ecx, 8); Insert('-', s, 5); Insert('-', s1, 5); Insert('-', s2, 5); info(' - ' + 'Serial Number: ', s + '-' + s1 + '-' + s2); asm mov eax,1 db $0F,$A2 mov _edx,edx end; info('', ''); //Bit 23 =? 1 if (_edx and $800000) = $800000 then info('MMX ', 'Supported') else info('MMX ', 'Not Supported'); //Bit 24 =? 1 if (_edx and $01000000) = $01000000 then info('FXSAVE & FXRSTOR Instructions ', 'Supported') else info('FXSAVE & FXRSTOR Instructions Not ', 'Supported'); //Bit 25 =? 1 if (_edx and $02000000) = $02000000 then info('SSE ', 'Supported') else info('SSE ', 'Not Supported'); //Bit 26 =? 1 if (_edx and $04000000) = $04000000 then info('SSE2 ', 'Supported') else info('SSE2 ', 'Not Supported'); info('', ''); asm //execute the extended CPUID inst. mov eax,$80000000 //sub. func call db $0F,$A2 mov _eax,eax end; if _eax > $80000000 then //any other sub. funct avail. ? begin info('Extended CPUID: ', 'Supported'); info(' - Largest Function Supported: ', IntToStr(_eax - $80000000)); asm //get brand ID mov eax,$80000002 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; s := ''; s1 := ''; s2 := ''; s3 := ''; for i := 0 to 3 do begin b := lo(_eax); s3:= s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; s_all := s3 + s + s1 + s2; asm mov eax,$80000003 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; s := ''; s1 := ''; s2 := ''; s3 := ''; for i := 0 to 3 do begin b := lo(_eax); s3 := s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; s_all := s_all + s3 + s + s1 + s2; asm mov eax,$80000004 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end; s := ''; s1 := ''; s2 := ''; s3 := ''; for i := 0 to 3 do begin b := lo(_eax); s3 := s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end; info('Brand String: ', ''); if s2[Length(s2)] = #0 then setlength(s2, Length(s2) - 1); info('', ' - ' + s_all + s3 + s + s1 + s2); end else info(' - Extended CPUID ', 'Not Supported.'); end; procedure Tfrm_main.info(s1, s2: string); begin if s1 <> '' then begin img_info.Canvas.Brush.Color := clblue; img_info.Canvas.Font.Color := clyellow; img_info.Canvas.TextOut(gn_text_x, gn_text_y, s1); end; if s2 <> '' then begin img_info.Canvas.Brush.Color := clblue; img_info.Canvas.Font.Color := clWhite; img_info.Canvas.TextOut(gn_text_x + img_info.Canvas.TextWidth(s1), gn_text_y, s2); end; Inc(gn_text_y, 13); end; procedure Tfrm_main.FormCreate(Sender: TObject); begin end; end.
Отредактировано Sheeft (2008-04-15 21:51:40)
Поделиться362008-04-16 20:03:22
спсб. попробую
Поделиться372008-05-21 14:44:11
Добрый день народ!
Можно ли контроллер Романа состыковать с Kcam?
Vri-CNC все равно куплю, но некоторые вещи можно сделать только с KCam
Поделиться382008-05-22 20:59:15
нет контроллер на ТМ5 (ТМ7) не будет работать с другими програмами кроме как с VRI-cnc
Поделиться392008-05-22 22:14:51
Роман как можно приобрести полную версию програмы.
На мыло вам писал вы не ответели.
Поделиться402008-05-24 18:09:27
у меня накрылись ВИНДЫ. потихоньку востанавливаю. писем накопилось много по мере возможности отвечаю. прошу прощения за задержку.
Поделиться412008-07-03 20:33:20
а можно комп запустить вообще без винта? только флешка?
Можно, при соблюдении ряда условий.
1. Материнская плата должна поддерживать загрузку с USB. То есть старые дохленькие компы отдыхают, глотая сопли...
2. Флэшка должна поддерживать создание на себе загрузочной информации. То есть старые дешёвые флэшки за 200-300 рублей отдыхают и глотают сопли....
Есть третий вариант, самый экономичный
Сделать загрузочную дискетку с 98-й мастдайкой и запускать программу с неё. Но тут проблема защиты от копирования даже не встаёт. Никакой защиты попросту нет, разве что к аппаратному ключу, втыкаемому, допустим. в тот же порт принтера. Но аппаратный ключ стоит больше... Смысл теряется.
Есть и четвёртый вариант, самый продвинутый.
Поставить на плату контроллера недорогой МК с защитой прошивки от чтения (AVR, к примеру) и перенести на него часть операций с программы.
То есть на выходе с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
Тогда привязка будет к прошитому МК с установленным битом защиты. Стереть прошивку - можно, прочесть - низя.
Стоимость недорогих МК семейства AVR порядка двух - трёх десятков рублей, оптом дешевле...
Тогда программа будет бесплатная, а деньги брать за этот прошитый МК, высылаемый в бандерольке. Плючы - демоверсия и рабочая программа - в одном флаконе.
Нет МК на плате контроллера - пишем ДЕМО и работаем пять минут.. Есть МК (отозвался на запрос) - работаем в полном объём.
Есть и пятый вариант, вообще красивый.
Генерировать пару ключей (открытый и закрытый), пользователь тоже самое делает. Открытый ключ автора лежит на сайте. Открытый ключ покупателя присылается автору мылом и кладётся в базу. При запуске станок лезет в инет на родной сервер и там авторизует своим ключом свой комп и получает добро.
И всё.
Если возникают сомнения в адекватности копии (каждый день с нового адреса, каждый день новый винт и новый проц) - вздыхаем, баним ключ и ждём, когда встрепенётся настоящий владелец ключа и учиняем разборку.
Ну примерно как работает Оракл с удалёнными клиентами. Или SSH-клиент с сервером.
При длине каждого ключа в пару килобайт можно до посинения подбирать ключ и сжечь электричества на этом раз в сто больше, чем программа стоит.
И не подобрать.
Если кто-то будет кричать, что его станок/комп не подключён к инету, пусть подключит к тому компу свой мобильник на пару минут для активации программы и не создаёт проблем себе и другим.
А если у кого-то ещё и мобильник без инета, то я валяюсь...
Поделиться422008-07-04 12:41:37
Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это???
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды???
Что Вы скажете? Это настолько заморочит программму.
и 2) Генерировать пару ключей (открытый и закрытый), Вооще ХИТ!!!
ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
И в данном случае, когда Вы отправляете денежный перевод то именно паспорт как основной документ является при том же получении денежки.
Пожалста! Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ. Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе, Вы никому свой ключ на сторону не загоните. Вот сядьте и подумайте, не торопитесь отвечать.
Поделиться432008-07-04 18:02:44
Ув. Ironfelix!
Вы по-моему увлеклись!!!
Вам бы для ЗАС связи ключи генерить.
Вы хоть сами представили это???
.....
Особенно два мне понравились: 1)с компа давать не чистые команды, а некие полуготовые или кодированные. Которые МК доделывает или декодирует и выдаёт на приводы станка.
___Тогда уж давайте HASPы продавать, прошивка сама по себе слетать может, и каким образом будет в ДЕМО работать полуготовые команды???
Что Вы скажете? Это настолько заморочит программму.
......и 2) Генерировать пару ключей (открытый и закрытый), Вооще ХИТ!!!
ВЫ согласитесь со мной, что программа покупается реальным человеком, с реальным местом жительства, с номером паспорта и т.д.
......
Пожалста! Вот простая идея! Пришел перевод от Иванова Ивана Ивановича с номером паспорта ХХХХХХХХХ. Сгенерился ключ. ИНДИВИДУАЛЬНЫЙ!!!
Можно туда и привязку к компу сделать.
Но я Вам могу сказать следующее, что при таком раскладе, Вы никому свой ключ на сторону не загоните. Вот сядьте и подумайте, не торопитесь отвечать.
1. Ключи можно генерировать для чего угодно.
Если Вы думаете, что процесс генерации сложен и труден, то скачайте терминалку, работающую с SSH и поглядите. как она генерирует ключи при первом запуске и сколько это занимает времени. Подсказка - время измеряется десятками секунд. А надёжность работы этой пары ключей ещё никем не опровергнута.
2. Внимательно читайте сообщения. Там описана процедура рабты ДЕМО с кодировкой через прошивку МК. Повторюсь - при отсутствии МК программа переходит в режим ДЕМО и работает без шифрования, но - пять минут.
3. Оформленные Вами с паспортом переводы дальше передаются как раз парой ключей, которые подтверждают легальность перевода. Так счто паспорт не отменяет и не заменяет ключей.
ПО Вашему примеру могу привести простой антипример6 по паспорту, прописке. переводу, человек получает программу/ключ и преспокойно перепродаёт её кому попало или просто раздаёт её даром. А если Вы попытаетесь применять санкции, человек сделает большие круглые честные глаза и скажет - измините. ЭТОТ паспорт мною утерян пять лет назад, вот справка от милиции и вот мой НАСТОЯЩИЙ паспорт. И вообще, кто вы ткие, кака программа, как е ключи? У меня и компа нет.
Вот - тоже посидите и подумайте.
Паспортов крадут/теряют/похищают немало...
Защитой паспорт является только для честного человека, а не для бесчестного.
В этом смысле пара ключей по надёжности не уступает паспортным данным.
Так что дело упирается в стоимость защиты - не будет ли она превышать стоимость программы.
Просто мне не нравится привязка к винту, учитывая нынешнюю система SMART, которая убивает винты строго по истечению времени во встроенном таймере.
Поделиться442008-07-04 18:45:53
Братцы,цена проги - две бутылки водки(в Украине).Я очень сомеваюсь,что это "бабло" хотя-бы частично ,компенсирует Роману всю эту "возню" с нами...Может это своеобразный "учёт"пользователей.Перепродал,подарил-а поинтересуйтесь-многим это надо?Вокруг меня(ОТВЕЧАЮ!) в радиусе 80км. нет ни одного такого.И на этом форуме ЕДИНИЦЫ используют её в коммерческих целях.Ну а способ защиты - тут хозяин-барин.Я специально собрал комп для этих "забав".И купил 2-ю прогу,не победнел...
Поделиться452008-07-04 19:22:48
хотел ответить но в сообщении Dj_smart все и так сказано.
хотя уточню: денег полученных за прогу хватает только на оплату инета. т.е. покупая программу вы делаете мое общение с вами (форумом) бесплатным. Спасибо!
Поделиться462008-07-13 21:14:27
прога выдала мне код 11284--32192001
Пиши Роману в личку.
Dj_smart.