Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: Aleksoid1978
Дата сообщения: 16.11.2015 08:00
Всем привет.
Вопрос - есть ли способ выполнить простенькую js функцию из с++(VS2013/VS2015)

Смысл вот в чем - есть парсер youtube, на некоторых ссылках параметр signature "зашифрован", функция дешифровки находиться в отдельном .js файле. Сам .js файл получить не проблема, так же как и найти функцию. Но вот вопрос - что потом с ней делать ?? И самое главное что для разных ссылок функция отличается.

Вот пример этой функции:

Код:
function Q2(a){a=a.Yf();return Math.max(16384,.125*a)};
function cK(a,b){var c=a.getAttribute(b);if(null!=c)return"1"==c};
yy:function(a,b){var c=a[0];a[0]=a[b%a.length];a[b]=c}};
function gs(a){a=a.split("");fs.yy(a,40);fs.Q2(a,3);fs.yy(a,53);fs.yy(a,11);fs.Q2(a,3);fs.cK(a,8);fs.Q2(a,3);fs.yy(a,16);fs.cK(a,75);return a.join("")};
Автор: NeoAnomaly
Дата сообщения: 16.11.2015 08:49
Aleksoid1978, легче портировать код, чем мутить с JS движками
Автор: Aleksoid1978
Дата сообщения: 16.11.2015 08:53
NeoAnomaly
Это получается надо написать универсальный парсер ...

Добавлено:
Пример выше - я немного перепутал. Раскопал получше файл, вот выдрал из него "нужные" функции

Код:
var $q=function(a){a=a.split("");ar.lM(a,1);ar.JY(a,31);ar.LB(a,47);return a.join("")};
var ar={
    JY:function(a,b){var c=a[0];a[0]=a[b%a.length];a=c},
    lM:function(a,b){a.splice(0,b)},
    LB:function(a){a.reverse()}
}
Автор: ne_viens
Дата сообщения: 16.11.2015 13:47
void Q2(char* a, int b)
{
    memmove(a, &a[b], 1 + strlen(a));
}

void cK(char* a)
{
    char c;
    int i, len = strlen(a);
    
    for(i = 0; i < len / 2; ++i)
    {
        c = a[i];
        a[i] = a[len - i - 1];
        a[len - i - 1] = c;
    }
}

void yy(char* a, int b)
{
    char c = a[0];
    b %= strlen(a);
    a[0] = a[b];
    a[b] = c;
}
Автор: Aleksoid1978
Дата сообщения: 16.11.2015 14:20
ne_viens
Спасибо - попробую

На сколько я понял - Q2() просто убирает первые n символов, cK() - возвращает reverse(данные в обратном порядке), yy() - просто меняет местами нулевой и N символы.
Автор: 127
Дата сообщения: 23.11.2015 19:45
это не надолго, до следующего изменения скриптов ютуба. оно тебе надо? замучаешься исправлять...
Автор: Aleksoid1978
Дата сообщения: 24.11.2015 03:44
127

Цитата:
оно тебе надо? замучаешься исправлять...

Понятное дело - ну раз есть поддержка Youtube, хочется чтобы любые ссылки открывались. Пока написал свой "парсер" .js файла - разок сменили скрипты, пока работает
Автор: Medium
Дата сообщения: 30.12.2015 23:58
Подскажите, пожалуйста, хоть какие-нибудь книги для обучения программированию на Си (любом) в Visual Studio для начинающих.
Важно, чтобы там обучалось созданию интерфейса приложений (разные там формы, кнопки, панели и т.д.).
Создание консольных приложений ребёнка не сильно затягивает, хочется заинтересовать его именно визуальной частью создания программ.

Буду признателен за любые советы - названия книг, авторов независимо от даты издания, наличия только печатной версии и т.д.
Автор: bomzzz
Дата сообщения: 31.12.2015 06:11
а они все гуем создаются. в ручную окна даже на ассемблере не делают
Автор: Medium
Дата сообщения: 31.12.2015 09:33
Спасибо, это понятно. Но есть же книги, где рассказывается про построение интерфейса через "гуй"
Автор: 127
Дата сообщения: 31.12.2015 10:36
Medium, учите Дельфи или ВизуалБейсик. Они ничем не уступают С++, но порог вхождения много ниже, а визуальщины - много больше, на любой вкус. Си ребенку ни к чему.
Главное, что вам нужно понять - ни один ЯП никак не связан с визуальными компонентами. Визуальщину рисует всегда внешняя библиотека, язык - всего лишь делает к ней обращения, как к любой другой. Окно нарисовать - это то же самое, что и файл прочитать, синус вычислить.
Просто иногда эта либа уже есть в ОС (Винда), иногда можно даже не одну такую выбрать (Линукс), а иногда нужно все тащить с собой (ДОС).
Соответственно, читая книги по построению GUI в Винде через MFC, вы привязываетесь к Винде и МФЦ, и ничего другого не узнаете, а при поступлении на работу - придется все заново учить, другую ОС, другую либу, другие правила жизни...
Так что, начав с Дельфи или ВБ, вы ничего не потеряете, а главное, у ребенка останется интерес.
Автор: Medium
Дата сообщения: 31.12.2015 16:32
Спасибо за ответ. С наступающим
В таком случае, может посоветуете книгу для обучения создания GUI на Visual Basic?
Автор: 1lex1
Дата сообщения: 03.01.2016 10:03
Есть ли в C беззнаковое умножение?
Для
Код: int main()
{
unsigned x,y,z;
x=40000;
y=x*x;
}
Автор: 127
Дата сообщения: 03.01.2016 13:16
Try typecast
Автор: ne_viens
Дата сообщения: 03.01.2016 13:43
» 1lex1
Да, есть в _allmul();
Автор: 127
Дата сообщения: 03.01.2016 13:49
На телефоне в принципе и так нормально считает


Добавлено:
Выводит 3600000000
Автор: ne_viens
Дата сообщения: 03.01.2016 14:00
Так это на ARMe, там мулов штук восемь разных.
Автор: 127
Дата сообщения: 03.01.2016 14:33
Думаете, оно нативно компилирует?
Автор: ne_viens
Дата сообщения: 03.01.2016 14:44
Так это, в самом конце всё равно будет umull, smull или что там ещё. Не будет же он х раз add делать.
Автор: 1lex1
Дата сообщения: 03.01.2016 15:12
ne_viens, 127, спасибо.
Программа на ПК, а не на телефоне. _allmul() как я понял виндовская функция для произведения 64-битных чисел, а меня интересует, чтобы компилятор использовал умножение mul, которое есть у процессоров x86.
Автор: ne_viens
Дата сообщения: 03.01.2016 15:27
Если результат будет int или uint, то без разницы mul или imul, так как eax в обоих случаях будет такой же. Зачем тогда две разные версии умножения таскать с собой компилятору?
Mul действительно нужен, когда надо в результате получить unsigned long long, тогда и исползуются и eax и edx в результате.
Автор: 127
Дата сообщения: 03.01.2016 19:59
ne_viens, действительно, на выходе имеем эльф
Автор: Aktaf
Дата сообщения: 21.01.2016 21:40
Уважаемые господа, подскажите пожалуйста.
Я несколько годов назад переделал внешние расположения, вид, пр. и теперь выглядит мой Виртуал Даб так. Для последующий работы, меня интересует описание и пр. касаемые ползунка - линейки, указывающая место проигрывание видео. Где и как это написано в файле PositionControl.cpp.
Помогите пожалуйста.
Автор: Aktaf
Дата сообщения: 24.01.2016 20:07
И... гробовое молчание.
Осмелюсь предположить: - кто знает, молчит (чего зря шевелиться ради ответа на такой "глупый вопрос" неуча); - кто не знает, писать что-то тем более ничего. Возможно знающий немного пошевелиться узнав мою хотелку.

Хочу очередную давнею идею попробовать осуществить. Нужно вывести управление регулированием громкости звука на главное меню или на "поверхность программы".
Оно находиться: меню > аудио > громкость и > громкость звука (маленькое окно).
Там находиться:
-квадратик - место для галочки - включатель - "регулятор громкости аудио каналов";
-слайдер - ползунок - регулятор громкости;
-кнопки - "да" и "отмена".
После включения - установки галочки, активизируется ползунок. После выключения, де активизируется.

Это (меню), так изложено в основном ресурсном файле VirtualDub.rc:
------------------------------
IDD_AUDIO_VOLUME DIALOGEX 0, 0, 260, 69
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Громкость звука"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
CONTROL "Регулировка громкости аудио каналов",IDC_ADJUSTVOL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,146,10
CONTROL "Slider1",IDC_SLIDER_VOLUME,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,13,20,172,17
CONTROL "100%",IDC_STATIC_VOLUME,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,188,23,65,8
DEFPUSHBUTTON "Да",IDOK,151,48,50,14
PUSHBUTTON "Отмена",IDCANCEL,203,48,50,14
END
--------------------------------------
А вот где пристроить, скорее всего туда же, где описаны расположения кнопок управления Даба - PositionControl.cpp.
Но, ради чего меня интересует (я снова не нахожу) описание основного ползунка, выше чего надо бы поместить эти элементы. И так ничего не знающему, через большой промежуток времени, сложно ориентироваться. Не говоря уже о том, как реально "переместить", а может пока скопировать их на новое место.
----------------------------------
На мой взгляд есть 2 варианта расположения этих элементов.
Вверху, имеющееся окошко - меню. Внизу в программу пристроены сразу 2 варианта. Первый внизу справа, второй выше имеющегося основного ползунка - проигрывателя Даба.
Скорее всего, необходимость кнопок "да" и "отмена" отпадет.
По мне второй вариант лучше, легче найти решение. Ничему не помешает. В том числе и при уменьшении "габарита" программы (сжатие по краям к центру) и нормально вписывается в общую картину.

Пожалуйста, хоть какие либо соображения, направление.
Спасибо.
Добавлю?
Регулятор громкости - для регулирования громкости выходного файла.
Автор: 127
Дата сообщения: 24.01.2016 20:17
Ищи либо по имени slider1 либо по IDC_SLIDER_VOLUME

Добавлено:
Ну или я не так понял
Автор: Aktaf
Дата сообщения: 24.01.2016 22:01
127

Цитата:
или я не так понял

Спасибо и
да, не так поняли. Если бы было так легко, я бы и не стал тут просить.
В выдержке из файла VirtualDub.rc, это "ползунок регулятора" громкости, который нужно переместить, на мой взгляд в файл PositionControl.cpp. В этом файле описаны расположения кнопок программа, место информации по обрабатываемому файлу. И я думаю ползунок - длинная линия поперек всего Виртуал Даба - показывающий место проигрывания видео файла, чуть выше кнопок. Внешний вид и желаемые изменения указаны в рисунке есть 2 варианта - http://savepic.su/6972621.htm. По картинке вроде все понятно.
Вот этот главный ползунок я и не могу найти. А может его в файле - PositionControl.cpp нет, Он в другом файле? Мне что-то не вериться, для чего так усложнять?Но, если даже так, то как же найти?

И еще, если кто сможет подсказать. Можно попытаться не обращать внимание на этот главный ползунок и встроить комплект регулятора звука выше кнопок. Как первый шаг, пусть даже не будет рабочим. Хотя бы чтобы эти элементы появились где-либо рядом с этими кнопками (кнопкам и их функциям, посвящены очень много мест этого файла).
А где появляться - начиная с 742 строки и до 992.

Автор: 127
Дата сообщения: 25.01.2016 10:17
IDC_TRACKBAR    = 500
но его нет в ресурсном файле rc
наверное этот контрол рисуется динамически...

Добавлено:
IVDPositionControl *VDGetIPositionControl(VDGUIHandle h) {
return static_cast<IVDPositionControl *>((VDPositionControlW32 *)GetWindowLongPtr((HWND)h, 0);

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

положение на форме задается этими полями

RECT mPositionArea; // track, ticks, bar, and numbers
RECT mTrackArea; // track, ticks, and bar
RECT mTickArea; // just ticks
RECT mTrack; // just the track

грубо говоря, редакторы ресурсов тут идут мимо
Автор: Aktaf
Дата сообщения: 25.01.2016 12:41
127
Спасибо!
в моих догадках были эти строки, но не был уверен.
вот бы еще в этот файл перетащить элементы регулирования звука.
Автор: 127
Дата сообщения: 25.01.2016 13:24
зачем? для звука, наверное, есть отдельный файл cpp
Автор: Aktaf
Дата сообщения: 25.01.2016 15:47
127

Цитата:
для звука, наверное, есть отдельный файл cpp

Есть конечно, и не один. Я не пишу про звук, а элементы управления.
Они как раз, если находятся на "поверхности" программы прописываются в файле - PositionControl.cpp. А если глубже - то в VirtualDub.rc и ему подобных.
А это я уже показал, в VirtualDub.rc. Вот оттуда нужно вытащить в наружу - PositionControl.cpp.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.