Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Cortas
0 / 0 / 0
Регистрация: 14.03.2016
Сообщений: 13
Завершенные тесты: 2
#1

Программа - роутер, раздающая wi-fi с ноута - C++

26.07.2016, 22:36. Просмотров 228. Ответов 1

ПРЕДИСЛОВИЕ

Здравствуйте! Есть задача написать простенькую программа которая раздает wi-fi с ноута с помощью команды nesth или чего-нибудь другого, если оно вообще есть. Я уже писал такую программку, но только на pascal.
Для тех кому интересно

Довольно примитивная, со скудным функционалом, однако функцию свою выполняет.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
uses crt,sysutils,dos,mouse;
const nf='WiFiCFG.bat';
 
var x1,y1,x2,y2,i:integer;
    sim:string[13];
    bt:text;
    buf,NNS,data,start,stop,s:string;
    f:longint;
    e:TMouseEvent;
    wlan,show:boolean;
 
procedure start_wlan;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,start);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
 
procedure stop_wlan;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,stop);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
procedure rec(x1,y1,x2,y2:integer; style:char);
  var j:integer;
  begin
  if style='b' then j:=7
  else j:=1;
  GotoXY(x1,y1); write(sim[j+2]);
  GotoXY(x2,y1); write(sim[j+3]);
  GotoXY(x1,y2); write(sim[j+4]);
  GotoXY(x2,y2); write(sim[j+5]);
  for i:=x1+1 to x2-1 do begin GotoXY(i,y1); write(sim[j+1]); GotoXY(i,y2); write(sim[j+1]); end;
  for i:=y1+1 to y2-1 do begin GotoXY(x1,i); write(sim[j]); GotoXY(x2,i); write(sim[j]); end;
  end;
 
function InBoxClick(x1,y1,x2,y2:integer; click:char):boolean;
  var button:word;
  begin
  Case click of
  'l': button:=MouseLeftButton;
  'r': button:=MouseRightButton;
  'm': button:=MouseMiddleButton;
  end;
  if(e.buttons=button) and (e.action=MouseActionDown) and (e.x+1>=x1) and (e.x+1<=x2) and (e.y+1>=y1) and (e.y+1<=y2) then
    InBoxClick:=true
  else
    InBoxClick:=false;
  end;
 
function PointClick(x,y:integer; click:char):boolean;
  var button:word;
  begin
  Case click of
  'l': button:=MouseLeftButton;
  'r': button:=MouseRightButton;
  'm': button:=MouseMiddleButton;
  end;
  if(e.buttons=button) and (e.action=MouseActionDown) and (e.x+1=x) and (e.y+1=y) then
    PointClick:=true
  else
    PointClick:=false;
  end;
 
procedure AcceptChanges;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,data);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
 
procedure ChangeName;
  var outs:boolean;
  begin
  donemouse;
  GotoXY(2,2); textcolor(12); write('  Enter new name  ');
  outs:=false;
  textcolor(8);
  GotoXY(3,5); write('                ');
  repeat
    GotoXY(3,5); readln(NNS);
    for i:=1 to length(NNS) do
      if NNS[i]=' ' then begin
        GotoXY(3,5); write('WRONG NAME!'); delay(1000);
        GotoXY(3,5); write('                ');
        outs:=false; break;
      end else
        outs:=true;
  until outs;
  i:=0;
  repeat i:=i+1; until (data[i]=' ') and (data[i+1]='k');
  buf:=copy(data,i,length(data)); insert(buf,NNS,length(NNS)+1); i:=0;
  repeat i:=i+1; until (data[i]='d') and (data[i+1]='='); i:=i+2;
  delete(data,i,length(data)); insert(NNS,data,i);
  AcceptChanges;
  GotoXY(2,2); textcolor(12); write('   Name changed   '); textcolor(2);
  delay(1000); GotoXY(2,2); write('                  ');
  initmouse;
  end;
 
procedure SHPassword;
  var j:integer;
  begin
    textcolor(8); GotoXY(3,9);
    j:=0;
    repeat j:=j+1; until (data[j]='y') and (data[j+1]='='); j:=j+2;
    if show then begin
      write(data[j..length(data)]);
      GotoXY(19,9);
      write('ш');
      show:=false;
    end else begin
      for j:=j to length(data) do write(sim[13]);
      GotoXY(19,9);
      write('~');
      show:=true;
    end;
    textcolor(2);
  end;
 
procedure ChangePassword;
  var i:integer;
      outs:boolean;
  begin
  i:=0;
  outs:=false;
  donemouse;
  GotoXY(2,2); textcolor(12); write('Enter new password');
  if show then begin
    GotoXY(3,9); SHPassword; end;
  GotoXY(3,9); write('                ');
  textcolor(8);
  repeat
  GotoXY(3,9); readln(NNS);
  if length(NNS)<8 then begin
    GotoXY(3,9); write('7> SIMVOLS!     '); delay(1000);
    GotoXY(3,9); write('                ');
    end;
    for i:=1 to length(NNS) do
      if NNS[i]=' ' then begin
        GotoXY(3,9); write('WRONG PASSWORD!'); delay(1000);
        GotoXY(3,9); write('                ');
        outs:=false; break;
      end else
        outs:=true;
  until (length(NNS)>8) and outs;
  repeat i:=i+1; until (data[i]='y') and (data[i+1]='='); i:=i+2;
  delete(data,i,length(data)); insert(NNS,data,i);
  AcceptChanges;
  GotoXY(2,2); textcolor(12); write('Password chenged  '); textcolor(2);
  delay(1000); GotoXY(2,2); write('                  ');
  initmouse;
  end;
 
procedure SwitchWlan;
  begin
  GotoXY(8,13);
  if wlan then begin
    textcolor(8); write('Start'); textcolor(2);
    GotoXY(3,1); write('OFF'); stop_wlan; wlan:=false; end
  else begin
    textcolor(8); write('Stop '); textcolor(2);
    GotoXY(3,1); write('ON',sim[8]); start_wlan; wlan:=true; end;
  end;
 
begin
clrscr;
cursoroff;
initmouse; showmouse;
textcolor(2);
data:='start netsh wlan set hostednetwork mode=allow ssid=Asus_EeePC key=barguzin2017';
start:='netsh wlan start hostednetwork'; stop:='netsh wlan stop hostednetwork';
sim:='іДЪїАЩєНЙ»Ијщ';
show:=false;
x1:=1; x2:=20;
y1:=1; y2:=16;
rec(x1,y1,x2,y2,'b'); GotoXY(17,1); write('[ю]'); x1:=x1+1; x2:=x2-1;
rec(x1,4,x2,6,'n'); textcolor(8); GotoXY(3,5); write(data[52..62]); textcolor(2);
GotoXY((x2 div 2)-length('name')+1,4); write('Name');
rec(x1,8,x2,10,'n'); SHPassword; GotoXY(5,8); write('Password');
rec(x1,12,x2,14,'n'); textcolor(8); GotoXY(8,13); write('Start'); textcolor(2);
repeat
donemouse; initmouse; showmouse;
GetMouseEvent(e);
if InBoxClick(x1,4,x2,6,'l') then
  ChangeName
else if PointClick(19,9,'l') then
  SHPassword
else if InBoxClick(x1,8,x2,10,'l') then
  ChangePassword
else if InBoxClick(x1,12,x2,14,'l') then
  SwitchWlan
else if PointClick(18,y1,'l') then begin
    GotoXY(18,1); write('');
    repeat GetMouseEvent(e);  until e.action=MouseActionUp;
    GotoXY(18,1); write('ю');
    if (e.x=17) and (e.y=0) then break;
  end;
until PointClick(18,y1,'l');  end.

Пробовал написать такую же только с большим функционалом уже на с++. Но столкнулся с некоторыми проблемами при написании в консоли. Например при запуске сети программа запускает сеть и все, потом она просто зависает. Решил, что в консоли делать её бессмысленно, поэтому решил иcпользовать WinApi.

ВОПРОС
1. Как можно реализовать запуск/остановку сети? (в cmd nesth wlan start/stop hostednetwork)
2. Как вывести/записать в переменную количество подключенных пользователей? (в cmd netsh wlan show hostednetwork)
3. Как менять ssid и key?
4. Возможно ли это вообще реализовать на С++?

ПОСЛЕСЛОВИЕ
У меня есть некоторые идею насчет этого. Например запускать консоль, которая будет менять параметры сети или запускать её, в маленько окошке за приделом экрана при нажатии кнопки. Но вот как можно записать количество пользователей...


P.S. Я не в коем случае не прошу писать за меня данную программу, а лишь помочь разобраться в данных вопросах.
P.P.S. Заранее всем спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 22:36     Программа - роутер, раздающая wi-fi с ноута
Посмотрите здесь:
C++ Builder Управление питанием ноута...
2 ноута, роутер, стрим...
Купил роутер TL-WR841ND, не могу одновременно выходить в интернет с ноута и компьютера
Организовать сеть Хаб - роутер - роутер - роутер - роутер. Все роутеры имели свои IP адреса и локальную сеть
У DVD от ноута SATA разъем меньше, чем у жесткого от ноута
есть два ноута. у обоих есть ви-фи. у первого ноута имеется интернет yota. все настроил работает и локалка и инет.НО
есть роутер(проводной) TL-R460, нужно подключить к нему WIFI роутер
Роутер-мост-фильтр + роутер-модем: Добавить определенные сайты в исключения
Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU
ADSL роутер tp-link td-w8961ND как обычный ethernet роутер
Необходимо настроить цепочку: десктоп - роутер - роутер - adsl - интернет
Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
886 / 625 / 126
Регистрация: 28.07.2012
Сообщений: 1,683
26.07.2016, 23:25     Программа - роутер, раздающая wi-fi с ноута #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Cortas, думаю, что правильнее было бы это сделать через вызов функций отсюда (которые с префиксом WlanHosted).
Цитата Сообщение от Cortas Посмотреть сообщение
в cmd
Все команды "из cmd" можно запускать через system("cmd nesth wlan start").
Цитата Сообщение от Cortas Посмотреть сообщение
Как вывести/записать в переменную количество подключенных пользователей?
Это можно сделать либо через вызов нужной функции из первой ссылки, либо запуском твоей команды через CreateProccess с перенаправлением стандартного вывода. (Что бы считать в переменную ту фигню, которую нам выдала команда).
Yandex
Объявления
26.07.2016, 23:25     Программа - роутер, раздающая wi-fi с ноута
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru